我创建了一个运行后台进程的rails应用程序。它会定期ping服务器并显示响应时间的图表。为此我使用了一个名为crono的宝石。我正在使用'bundle exec crono'从命令行启动任务。
如何在rails服务器启动时自动运行后台进程而无需从命令行启动它?
此外,有没有办法定期自动刷新页面,以便显示更新的图表?
编辑:此应用程序将部署到生产中 编辑:我仍然无法让这个工作。这是文件夹结构:
应用/配置/
ping_job.rb
cronotab.rb
cronotab使用'crono'gem来每隔5秒执行ping_job.rb中的任务。
要求'typhoeus' 班级平交 def peform
#task定义在这里。
结束
端
我想在服务器启动时自动运行ping_job.rb中定义的任务。我想随时随地使用宝石。欢迎提出任何建议。
答案 0 :(得分:2)
将它放在Rails.application.initialize!
下的config / environment.rb中,运行它以启动rails服务器,因此将在应用程序初始化后运行
答案 1 :(得分: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控制台等时启动该过程。