我尝试在远程服务器上运行以下命令(通过capistrano或ssh):
bundle exec RAILS_ENV=production script/delayed_job start
但我收到此错误消息:bundler: not executable: script/delayed_job
以前从未见过这个,谷歌对我没有任何帮助。知道可能是什么问题吗?
答案 0 :(得分:8)
也许它没有权限运行?
chmod +x script/delayed_job
答案 1 :(得分:1)
我不确定这是否是对capistrano rbenv gem的根本误解或gem本身有问题,但是我对delay_job也有类似的问题,其中bin / delayed_job文件在复制时不会获得可执行权限通过capistrano到服务器。所以我写了一个在调用delay_job:restart任务之前运行的任务。
注意-添加此答案是因为较早的答案来自2014年,并且我还想展示如何添加任务,因此权限更改可以在部署本身期间进行。
在lib / capistrano / tasks文件夹中创建了一个任务(在命名空间delay_job中):
namespace :delayed_job do
desc 'Ensure that bin/delayed_job has the permission to be executable. Ideally, this should not have been needed.'
task :ensure_delayed_job_executable do
on roles(delayed_job_roles) do
within release_path do
execute :chmod, :'u+x', :'bin/delayed_job'
end
end
end
end
after 'deploy:publishing', 'deploy:restart'
namespace :deploy do
task :restart do
invoke 'delayed_job:ensure_delayed_job_executable'
invoke 'delayed_job:restart'
end
end