加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何为Sidekiq worker设置default_url_options

发布时间:2020-12-17 04:24:43 所属栏目:百科 来源:网络整理
导读:我有一个Sidekiq工作者,旨在执行社交活动(例如:Facebook上的类似页面).部分原因是需要知道所喜欢对象的URL. 幸运的是,Rails 3通过在任何类或模块中包含Rails.application.routes.url_helpers来访问路径/ url帮助器方法,可以轻松访问特定于应用程序的路由.
我有一个Sidekiq工作者,旨在执行社交活动(例如:Facebook上的类似页面).部分原因是需要知道所喜欢对象的URL.

幸运的是,Rails 3通过在任何类或模块中包含Rails.application.routes.url_helpers来访问路径/ url帮助器方法,可以轻松访问特定于应用程序的路由.

我遇到的问题是我的Sidekiq工作者无法访问我的默认URL /端口,尽管我在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指定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?

解决方法

我们做的是这样的:

在您的配置文件(例如config / application.rb,config / production.db等)中,有一行设置默认值:

routes.default_url_options = { host: 'www.example.org' }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读