मेरे पास एक साइडकीक कार्यकर्ता है जिसका उद्देश्य सामाजिक कार्यवाही करना है (उदाहरण: फेसबुक पर पृष्ठों की तरह)। इसके भाग को ऑब्जेक्ट पसंद होने के लिए यूआरएल जानने की आवश्यकता है।मैं साइडकीक श्रमिकों के लिए default_url_options कैसे सेट कर सकता हूं?
सौभाग्य से, रेल 3 किसी भी कक्षा या मॉड्यूल में पथ/यूआरएल सहायक विधि तक पहुंच की आवश्यकता वाले Rails.application.routes.url_helpers
सहित ऐप-विशिष्ट मार्गों तक पहुंच बनाना आसान बनाता है।
जिस समस्या में मैं चल रहा हूं वह यह है कि मेरे development.rb
या production.rb
में उन्हें परिभाषित करने के विभिन्न प्रयासों के बावजूद मेरा डिफ़ॉल्ट यूआरएल/पोर्ट मेरे साइडकीक कार्यकर्ता के भीतर से पहुंच योग्य नहीं है।
class Facebook::LikeRecipeWorker
include Sidekiq::Worker
include Rails.application.routes.url_helpers
sidekiq_options queue: :facebook
def perform(recipe_id, user_id)
recipe = Recipe.find(recipe_id)
user = User.find(user_id)
if user.facebook_token
api = Koala::Facebook::API.new(user.facebook_token)
api.put_connections 'me', 'my_namespace:like', object: recipe_url(recipe)
end
end
end
जब recipe_url
विधि का उपयोग कर सकते है, एक ArgumentError
संदेश के साथ उठाया है:
ArgumentError: Missing host to link to! Please provide the :host parameter, set default_url_options[:host], or set :only_path to true
मुझे पता है कि मैं ActionController
या ActionMailer
वातावरण-विशिष्ट config फ़ाइलें, जैसे में के लिए default_url_options
निर्दिष्ट कर सकते हैं:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_controller.default_url_options = { host: 'localhost', port: 3000 }
हालांकि, इन (सही ढंग से) पर कोई प्रभाव नहीं पड़ता मेरे साइडकीक कार्यकर्ता वर्ग। इन कक्षाओं के लिए मुझे default_url_options
को परिभाषित करने के बारे में कैसे जाना चाहिए?
स्वीकार्य उत्तर बदलना क्योंकि यह स्पष्ट रूप से लोगों के लिए बेहतर काम कर रहा है। धन्यवाद! –