如何调用delayed_job_active_record(rake jobs:work)外部生产环境

dod*_*747 1 ruby production-environment delayed-job ruby-on-rails-3

我有一个延迟的工作,无论何时用户发布一首歌,这个工作都会向用户Facebook墙发送一个活动帖子.这是作业的代码并在控制器中调用它.

我使用的'delayed_job_active_record'是在Ryan Bates Facebook Open Graph Railscast中看到的宝石

user.rb

def self.post_song(user_id, song_url)
    user = User.find(user_id)
    user.facebook.put_connections("me", "virtual_piano:post", song: song_url)
  end
Run Code Online (Sandbox Code Playgroud)

posts_controller.rb

(upon successful save)
        User.delay.post_song(current_user.id, post_url(@post))
Run Code Online (Sandbox Code Playgroud)

此作业使用标准在开发模式下运行rake jobs:work.

我见过一些人使用RAILS_ENV=production script/delayed_job start延迟工作我怎么能在生产中调用这个方法并让它在后台运行?

非常感谢!

Nat*_*ate 7

rake jobs:work在delayed_job中就像是rails srails 的命令 - 它在执行命令的控制台(shell)的主进程中运行.意味着当包含它的控制台(shell)停止运行(即您注销)时它会停止运行.

你会想要运行RAILS_ENV=production script/delayed_job start- 它启动delayed_job队列作为守护进程(后台进程)就像rails s -n对rails一样.