rake后台任务无法运行
我想像这样在rails中使用rake后台任务
system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 >> #{Rails.root}/log/rake.log &")
这在开发环境中没问题,但在生产模式下不起作用。
我使用记录器检查命令字符串是否生成正常,但在生产环境中似乎一切都很好:
cd /home/username/rails_staging/Abc/releases/20100904034630 && RAILS_ENV=production rake abc:def --trace 2>&1 >> /home/username/rails_staging/Abc/releases/20100904034630/log/rake.log &
任何人都知道为什么这不能在生产模式下工作?
谢谢
I want to use rake background task in rails like this
system("cd #{Rails.root} && RAILS_ENV=#{Rails.env} rake abc:def --trace 2>&1 >> #{Rails.root}/log/rake.log &")
This is ok in development environment, but will not work in production mode.
I used logger to check whether the command string is generated ok or not, but it seems every things is fine in production evironment:
cd /home/username/rails_staging/Abc/releases/20100904034630 && RAILS_ENV=production rake abc:def --trace 2>&1 >> /home/username/rails_staging/Abc/releases/20100904034630/log/rake.log &
Any body has any ideas about why this can not work in production mode?
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这是我的测试设置来复制您的问题。
它会运行。它只是不会进入日志。您可以在以生产模式运行的
rails console
中看到它在此处运行。Rake 在生产模式下禁用日志记录。所以创建一个新的。
作为您可能不想要的免费建议的旁注,这是运行后台作业的糟糕方法。看看delayed_job gem。
This is my test setup to replicate your problem.
It will run. It's just not going to the log. You can see it run here in the
rails console
running in production mode.Rake disables logging in production mode. So create a new one.
As a side note of free advice you probably don't want, this is a bad way to run background jobs. Look at the delayed_job gem.