私には、社会的行動を実行することを目的としたSidekiqワーカーがいます(例:Facebookのページなど)。この一部では、高く評価されているオブジェクトのURLを知っている必要があります。
Rails.application.routes.url_helpers
幸い、Rails 3では、パス/ URLヘルパーメソッドへのアクセスが必要なクラスまたはモジュールに含めることで、アプリ固有のルートに簡単にアクセスできます。
私が遭遇している問題は、私のdevelopment.rb
またはでそれらを定義しようとするさまざまな試みにもかかわらず、私のデフォルトのURL/ポートに私のSidekiqワーカー内からアクセスできないこと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:リンクするホストがありません!:hostパラメーターを指定するか、default_url_options [:host]を設定するか、:only_pathをtrueに設定してください
default_url_options
環境固有の構成ファイルに、ActionController
または環境固有の構成ファイルで指定できることを知っていActionMailer
ます。例:
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_controller.default_url_options = { host: 'localhost', port: 3000 }
ただし、これらは(当然のことながら)私のSidekiqワーカークラスには影響を与えないようです。default_url_options
これらのクラスをどのように定義すればよいですか?