मैं दो संभावनाओं के बारे में सोच सकता हूं:
-
क्या कुछ सेटिंग है
ENV['REDIS_URL']
प्रारंभकर्ता चलने से पहले? उदाहरण के लिए शायद आपके पास.env
. है फ़ाइल को गिट में चेक किया गया है जो हेरोकू चर को ओवरराइड कर रहा है? -
आप कहते हैं कि यह कोड
redis.rb
. से है . क्या आपके पासconfig/initializers/resque.rb
है भी?config/resque.yml
के बारे में क्या? ? इनमें से कोई भी भी . हो सकता है रेडिस कनेक्शन खोलने की कोशिश कर रहा है। (यदि आप अपनी त्रुटि का संपूर्ण स्टैक ट्रेस पोस्ट कर सकते हैं, तो आप इसकी पुष्टि कर सकते हैं या इसे खारिज कर सकते हैं।) या आप Resque के अलावा किसी अन्य चीज़ के लिए Redis का उपयोग कर रहे हैं?
आप कुछ प्रिंटफ डिबगिंग भी कर सकते हैं और अपने इनिशियलाइज़र को यह कहने के लिए बदल सकते हैं:
if Rails.env.production?
puts "production: #{ENV['REDIS_URL']}"
uri = URI.parse(ENV["REDIS_URL"])
else
puts "not production"
uri = URI.parse("redis://localhost:6379")
end
इससे आपको यह स्पष्ट करने में मदद मिलनी चाहिए कि क्या हो रहा है। (आपको Rails.logger.info
का उपयोग करने की आवश्यकता हो सकती है के बजाय puts
।)
संपादित करें: वह स्टैक ट्रेस बहुत मददगार है! निश्चित रूप से, आपका अपना प्रारंभकर्ता वहां बिल्कुल नहीं है, लेकिन यहां अन्य कोड है जो अपने स्वयं के रेडिस कनेक्शन को लोड करने का प्रयास कर रहा है:
remote: /tmp/build_329306a238b046dda86a54d29db48f4c/vendor/bundle/ruby/2.4.0/gems/resque-web-0.0.9/config/initializers/resque_config.rb:4:in `<top (required)>'
यदि आप उस मणि को देखते हैं, तो आप देख सकते हैं कि वह यह कर रहा है:
require 'resque'
config = ENV.fetch("RAILS_RESQUE_REDIS", "127.0.0.1:6379")
Resque.redis = config
तो मुझे लगता है कि उत्तर सेट करना है RAILS_RESQUE_REDIS
इसके अलावा करने के लिए REDIS_URL
. आप हेरोकू config:set
. का उपयोग कर सकते हैं ऐसा करने का आदेश दें।