使用Capistrano的Bundler不会为DelayedJob生成二进制文件

hat*_*a91 7 ruby ruby-on-rails delayed-job bundler capistrano3

我正在使用Bundler为Capistrano部署的Rails应用程序.我正在尝试添加DelayedJob gem,但是在部署之后,远程服务器中缺少bin/delayed_job文件.它存在于我的本地机器上.

我尝试手动创建它bundle binstubs delayed_job但它失败了:There are no executables for the gem delayed_job.

我在这里错过了什么?

有问题的宝石是:Bundler 1.3.5,Capistrano 3.1.0,DelayedJob 4.0.0,Rails 4.0.2

编辑:这是我的完整Gemfile:http://pastebin.com/WuE3eJrj

小智 11

我遇到过同样的问题.delayed_job binstub不是使用bundler生成的,而是使用rails生成器生成的.在capistrano部署期间,防止bin目录被符号链接.从这个改变config/deploy.rb:

set :linked_dirs, %w{bin log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
Run Code Online (Sandbox Code Playgroud)

set :linked_dirs, %w{log tmp/pids tmp/cache tmp/sockets vendor/bundle public/system}
Run Code Online (Sandbox Code Playgroud)

然后我使用bundler在本地重新生成所有binstub

bundle install --binstubs
Run Code Online (Sandbox Code Playgroud)

现在我运行了delayed_job生成器

bundle exec rails g delayed_job
Run Code Online (Sandbox Code Playgroud)

检查所有内容并再次部署.


小智 5

gem "daemons"根据文档,我认为你需要包括:

为此,请将gem"守护进程"添加到Gemfile中,并确保运行rails generate delayed_job.

https://github.com/collectiveidea/delayed_job#running-jobs