Tôi đang cố gắng sử dụng đúng Capistrano và RVM để triển khai ứng dụng Ruby on Rails 3.2.2 của mình cho máy từ xa đang chạy Ubuntu 10.04 LTS. Nó đường nối mà tôi đã giải quyết được sự cố trước đây của mình liên quan đến "Rvm - Capistrano integration on Linux Ubuntu". Tuy nhiên, việc triển khai tôi nhận được lỗi sau liên quan đến đá quý DelayedJob:Làm thế nào để giải quyết "Bạn cần phải thêm đá quý" daemon "để Gemfile của bạn nếu bạn muốn sử dụng nó" lỗi trong chế độ sản xuất?
...
* executing "cd /srv/www/<APP_NAME>/releases/20120314135318 && bundle install"
servers: ["<DOMAIN>"]
[<DOMAIN>] executing command
[<DOMAIN>] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/releases/20120314135318 && bundle install' ** [out :: <DOMAIN>] Using rake (0.9.2.2)
** [out :: <DOMAIN>] Using builder (3.0.0)
...
** [out :: <DOMAIN>] Using daemons (1.1.8)
** [out :: <DOMAIN>] Using delayed_job (3.0.1)
** [out :: <DOMAIN>] Using delayed_job_active_record (0.3.2)
...
** [out :: <DOMAIN>] Your bundle is complete! It was installed into /srv/www/<APP_NAME>/shared/bundle
...
[<DOMAIN>] executing command
[<DOMAIN>] rvm_path=/usr/local/rvm /usr/local/rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/current; RAILS_ENV=production script/delayed_job stop'
*** [err :: <DOMAIN>] /usr/local/rvm/gems/ruby-1.9.3-p125/gems/delayed_job-3.0.1/lib/delayed/command.rb:4:in `rescue in <top (required)>'
*** [err :: <DOMAIN>] :
*** [err :: <DOMAIN>] You need to add gem 'daemons' to your Gemfile if you wish to use it.
*** [err :: <DOMAIN>] (
*** [err :: <DOMAIN>] RuntimeError
*** [err :: <DOMAIN>])
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/delayed_job-3.0.1/lib/delayed/command.rb:1:in `<top (required)>'
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `require'
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `block in require'
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:236:in `load_dependency'
*** [err :: <DOMAIN>] from /usr/local/rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.2/lib/active_support/dependencies.rb:251:in `require'
*** [err :: <DOMAIN>] from script/delayed_job:4:in `<main>'
command finished in 7512ms
*** [deploy:update_code] rolling back
...
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell 'ruby-1.9.3-p125' -c 'cd /srv/www/<APP_NAME>/releases && tar xzf /tmp/20120314140345.tar.gz && rm /tmp/20120314140345.tar.gz'" on <DOMAIN>
Ngay cả khi giải thích lỗi là "Bạn cần phải thêm đá quý 'daemon' để Gemfile của bạn nếu bạn muốn sử dụng nó", tôi đã thêm vào các daemons
đá quý để Gemfile
của tôi (từ đầu ra ở trên, bạn thậm chí có thể lưu ý rằng tôi đang "Sử dụng daemon (1.1.8)"):
...
gem 'delayed_job'
gem 'delayed_job_active_record'
gem 'daemons'
...
Vì vậy, vấn đề là gì? Làm thế nào tôi có thể giải quyết điều đó?
Trong file deploy.rb
của tôi, tôi có:
$:.unshift(File.expand_path('./lib', ENV['rvm_path']))
require 'rvm/capistrano'
set :rvm_ruby_string, 'ruby-1.9.3-p125'
set :rvm_type, :user
require 'bundler/capistrano'
...
T.B.: Terminal cửa sổ đầu ra:
$ ruby -v
> ruby 1.9.3p125 (2012-02-16 revision 34643) [i686-linux]
$ which ruby
> /usr/local/rvm/rubies/ruby-1.9.3-p125/bin/ruby
kịch bản/delayed_job là của bạn hay không? Nó yêu cầu bên trong? – shingara
@shingara - Ý bạn là gì với "là của bạn hay không"? Với tập lệnh "script/delayed_job", bạn đang đề cập đến tệp nào? Tuy nhiên, trong mã trên/đầu ra là tất cả "của tôi" (có nghĩa là, mã và đầu ra là "thực"/"những gì tôi đang sử dụng và nhận được"). – user502052
trong nhật ký bạn qua lệnh thất bại là: 'RAILS_ENV = script sản xuất/delay_job stop' Tôi muốn biết nếu kịch bản này được tạo ra hoặc bạn tạo ra nó. – shingara