2017-01-25 13 views
6

पर नहीं, मैं ऑनलाइन सब कुछ ढूंढने की कोशिश कर रहा हूं, और कुछ भी काम नहीं कर रहा है। आशा है कि कुछ ताजा आंखें इस मुद्दे को देखेंगे। यह एक्शनकेबल का उपयोग करने वाला मेरा पहला समय है, और सबकुछ स्थानीय रूप से महान काम करता है, लेकिन जब उसकेोकू को दबाया जाता है।एक्शन केबल स्थानीय रूप से सदस्यता ले रहा है, लेकिन Heroku

[ActionCable] [[email protected]] MsgsChannel is streaming from msg_channel_34 

और जब एक संदेश भेजने, मैं देख पा रहे हैं [ActionCable] Broadcasting to msg_channel_34: लेकिन वे नहीं जोड़ रहे है, जो मेरा अनुमान है कि इसका मतलब है कि received विधि तक पहुँचा नहीं जा रहा है: अपने लॉग मेरी डेव सर्वर की तरह किसी भी actioncable सदस्यता नहीं दिखा /बुलाया?

मैं उसके पड़ोस के लॉग पर ध्यान देता हूं यह कहता है कि Listening on tcp://0.0.0.0:5000 जहां देव यह स्थानीयहोस्ट पर सुन रहा है: 3000। क्या मुझे किसी भी तरह से अपने heroku ऐप की तरफ इशारा करना चाहिए?

Procfile:

यहाँ प्रासंगिक विन्यास फाइल कर रहे हैं

web: bundle exec puma -p 5000 ./config.ru 
actioncable: bundle exec puma -p 28080 cable/config.ru 
redis: redis-server 

*** नीचे टिप्पणी के लिए धन्यवाद, मैं भी कोशिश कर रहा हूँ। अभी भी काम नहीं कर रहा है, लेकिन मैं देख सकता हूं कि जिस पोर्ट को यह सुन रहा है वह बदल रहा है, मुझे विश्वास है कि कॉन्फ़िगरेशन के साथ इसका कुछ संबंध है? :

web: bundle exec puma -p $PORT ./config.ru 
actioncable: bundle exec puma -p $PORT cable/config.ru 
redis: redis-server 

/cable/config.ru

require ::File.expand_path('../../config/environment', __FILE__) 
Rails.application.eager_load! 

ActionCable.server.config.allowed_request_origins = ["http://localhost:3000"] 
run ActionCable.server 

config/वातावरण/development.rb

config.action_cable.allowed_request_origins = ['localhost:3000'] 
config.action_cable.url = "ws://localhost:3000/cable" 

config/वातावरण/production.rb

config.web_socket_server_url = "wss://app-name.herokuapp.com/cable" 
    config.action_cable.allowed_request_origins = ['https://app-name.herokuapp.com', 'http://app-name.herokuapp.com'] 

config /cable.yml

local: &local 
    adapter: async 
    :url: redis://localhost:6379 
    :host: localhost 
    :port: 6379 
    :timeout: 1 
    :inline: true 
development: *local 
test: *local 


production: 
    :url: redis:<%= ENV["REDISTOGO_URL"] %> 
    adapter: redis 

<%= ENV["REDISTOGO_URL"] %> निर्धारित करते हैं, Heroku config

चलाकर पुष्टि की है

routes.rb

mount ActionCable.server => '/cable' 

क्यों इस देव पर काम कर रहा है, लेकिन Heroku पर नहीं? मैं घंटों के लिए पढ़ रहा हूं, लेकिन इसे समझ नहीं सकता। धन्यवाद!!

अद्यतन: Heroku लॉग्स:

2017-01-25T20:32:57.329656+00:00 heroku[web.1]: Starting process with command `bundle exec puma -p 5000 ./config.ru` 
2017-01-25T20:32:59.600554+00:00 app[web.1]: Puma starting in single mode... 
2017-01-25T20:32:59.600574+00:00 app[web.1]: * Version 3.6.2 (ruby 2.3.1-p112), codename: Sleepy Sunday Serenity 
2017-01-25T20:32:59.600575+00:00 app[web.1]: * Min threads: 0, max threads: 16 
2017-01-25T20:32:59.600577+00:00 app[web.1]: * Environment: production 
2017-01-25T20:33:02.375128+00:00 app[web.1]: profile controller 
2017-01-25T20:33:02.588653+00:00 app[web.1]: Use Ctrl-C to stop 
2017-01-25T20:33:02.588446+00:00 app[web.1]: * Listening on tcp://0.0.0.0:5000 
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2017-01-25T20:33:17.681469+00:00 heroku[web.1]: Stopping process with SIGKILL 
2017-01-25T20:33:17.862118+00:00 heroku[web.1]: Process exited with status 137 
2017-01-25T20:33:57.501746+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch 
2017-01-25T20:33:57.501908+00:00 heroku[web.1]: Stopping process with SIGKILL 
2017-01-25T20:33:57.630071+00:00 heroku[web.1]: Process exited with status 137 
2017-01-25T20:33:57.642753+00:00 heroku[web.1]: State changed from starting to crashed 
+0

आप एक समाधान अभी तक मिला? –

+0

@ कोडिंग सक्रिय हाँ - मैंने – gwalshington

उत्तर

6

मुद्दा यह था कि मेरा होस्ट हीोकू ऐप है, लेकिन अनुरोध कस्टम डोमेन से आ रहे थे।

हल करने के लिए:

heroku config:set RAILS_HOST "http://www.example.com"

और फिर production.rb में:

config.action_cable.url = "wss://#{ENV['RAILS_HOST']}/cable"

2

आपका procfile है कि आप इसके अलावा बंदरगाह 28080. पर केबल/cable.ru साथ प्यूमा चलाने का सुझाव - फ़ाइल केबल/config.ru इस लाइन को शामिल नहीं करना चाहिए:

ActionCable.server.config.allowed_request_origins = ["http://localhost:3000"] 

आप पहले से ही config/वातावरण में इस के लिए कॉन्फ़िगर/*। आरबी

+0

के नीचे समाधान पोस्ट किया है मैंने उपर्युक्त रेखा को हटा दिया है, और यह अभी भी वही है। मुझे अपने प्रोफाइल में बंदरगाह 28080 मिला, एक ट्यूटोरियल से - क्या इसे 'actioncable: bundle exec puma -p 28080 केबल/config.ru' के अलावा कुछ और कहना चाहिए? मैंने अपने heroku लॉग जोड़ दिया, मदद करता है कि मदद करता है। धन्यवाद! :) – gwalshington

1

अपने अनुप्रयोग नाम का शाब्दिक app-name है? मुझे संदेह नहीं है। बाधाओं इन मूल्यों है कि बहुत अच्छी हैं ...

config.web_socket_server_url = "wss://app-name.herokuapp.com/cable" 
config.action_cable.allowed_request_origins = ['https://app-name.herokuapp.com', 'http://app-name.herokuapp.com'] 

वास्तविक सार्वजनिक संपर्क वाला यूआरएल आप कनेक्ट करने का इरादा उपयोग करने के लिए अद्यतन करने की आवश्यकता है।

+0

आह हाँ, मैंने बस इसे SO पर पोस्ट करने के प्रयोजनों के लिए रखा है :) – gwalshington

संबंधित मुद्दे