我有一个效果很好的脚本,除了随机生成新文件失败...
这是代码:
...
file_log_path = File.join(Rails.root, 'log', "xls_import_#{Time.now.to_i}.log")
@log = File.new(file_log_path, 'w+')
....
这是delayed_job.log
中的错误2012-12-21T18:18:41+0100: [Worker(delayed_job host:webserver2.netbanana.it pid:24482)] LoadDataFromCsv failed with Errno::ENOENT: No such file or directory - /var/www/rails/myapp/releases/20121210093945/log/xls_import_1356110321.log - 0 failed attempts
2012-12-21T18:18:41+0100: [Worker(delayed_job host:webserver2.netbanana.it pid:24482)] PERMANENTLY removing LoadDataFromCsv because of 1 consecutive failures.
其他时候,它有效!有人可以帮帮我吗?
- 编辑:
嗯......似乎Rails.root使用了错误的部署路径......实际上/ var / www / rails / myapp / releases / 20121210093945不存在。
但是,正如我所说,脚本有时会起作用,有时候不会......如果我重新加载delayed_job,我的脚本会运行一些,然后开始失败。
答案 0 :(得分:3)
如果您正在使用Capistrano来管理您的版本,我猜这是基于路径结构的情况,那么您需要注意引用可在部署发生后删除的路径。每次部署时都需要重新启动DelayedJob,或者它可能在孤立目录中工作。
如果可能,您可能希望使用shared/log
路径,因为在部署之间会一直存在。
答案 1 :(得分:0)
我发现了几个delayed_job进程(僵尸),仍在运行......全部杀死它们(不是metallica的歌曲)现在它可以工作了!