2016-08-01 128 views
1

我创建了一个运行后台进程的rails应用程序。它定期ping服务器并显示响应时间图。为此,我使用了一个名为crono的gem。我使用'bundle exec crono'从命令行开始执行任务。Ruby on rails:如何在服务器启动时自动运行后台任务?

如何在rails服务器启动时自动运行后台进程,而无需从命令行启动它?

此外,有没有办法自动刷新页面,以便它显示更新的图表?

编辑:此应用程序将部署到生产。
编辑:我仍然无法得到这个工作。这里的文件夹结构:


的application/config/
ping_job.rb
cronotab.rb

cronotab使用 'CRONO' 宝石执行内部ping_job.rb每5任务秒。

需要 '百头巨怪'
类PingJob
    DEF [执行

     #任务定义放在这里。

   年底

我希望服务器启动时运行在ping_job.rb自动定义的任务。我正在考虑每当宝石时使用。任何和所有的建议是受欢迎的。

+0

要在系统启动时启动系统,请使用系统的标准工具。例如,在Ubuntu上它曾经是新贵。现在,我认为它是系统化的。其他系统可以有其他工具。请查阅您拥有的工具的文档。 –

回答

2

放入到config/environment.rb右下Rails.application.initialize!这是跑到启动Rails服务器,这样就前一段时间在应用程序初始化

1

后运行我想加入背景的开始与您的导轨服务器一起启动。最后我发现这是一个糟糕的主意。我认为最好的解决方案是创建一个部署任务,在每个部署中启动并重新启动该过程。例如capistrano允许做这样的事情:

namespace :deploy do 
    task :start do 
    invoke 'my_process:start' 
    end 

    task :stop do 
    invoke 'my_process:stop' 
    end 

    task :restart do 
    invoke 'my_process:start' 
    invoke 'my_process:stop' 
    end 
end 

namespace :my_process 
    task :start do 
    execute "some system command to start the process" 
    end 

    task :stop do 
    execute "some system command to stop the process" 
    end 
end 

永远不要在Rails初始化文件中启动你的进程。当服务器上的应用程序工作人员很少时,它可能会多次启动该过程。或者它可能会在启动Rails控制台等时启动该进程。

相关问题