bundler:不可执行:script / delayed_job

时间:2014-11-16 15:03:51

标签: ruby-on-rails ruby delayed-job

我尝试在远程服务器上运行以下命令(通过capistrano或ssh):

bundle exec RAILS_ENV=production script/delayed_job start

但我收到此错误消息:bundler: not executable: script/delayed_job

以前从未见过这个,谷歌对我没有任何帮助。知道可能是什么问题吗?

2 个答案:

答案 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