私は、ソーシャルアクション(例:Facebookのページに似ています)を行うことを目的としたSidekqワーカーがいます。これの一部には、好きなオブジェクトのURLを知る必要があります。Sidekiqワーカー向けにdefault_url_optionsを設定するにはどうすればよいですか?
幸いにも、Rails 3では、path/urlヘルパーメソッドへのアクセスが必要なクラスまたはモジュールにRails.application.routes.url_helpers
を含めることで、アプリケーション固有のルートに簡単にアクセスできます。
私の問題は、私のdevelopment.rb
またはproduction.rb
にそれらを定義しようとしているにもかかわらず、私のSidekiqワーカーから私のデフォルトのURL /ポートにアクセスできないということです。
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
ためdefault_url_options
を指定できることを知っています:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_controller.default_url_options = { host: 'localhost', port: 3000 }
ただし、これらは正当な影響を及ぼさないようです私のSidekiqワーカークラス。どのようにこれらのクラスのためにdefault_url_options
を定義するつもりですか?
あなたの回答はあなたのものに変わるのは明らかです。ありがとう! –