【发布时间】:2011-07-21 19:37:37
【问题描述】:
当我尝试运行以下任务以重新启动服务器上的延迟作业时,我收到以下错误消息。 但是,如果不运行此脚本,部署成功并且应用程序按预期运行,因此所有 gem 都已正确安装,并且 rails 2.3.8 是服务器上安装的版本。
namespace :delayed_job do
desc "Restart the delayed_job process"
task :restart, :roles => :app do
run "cd #{current_path}; RAILS_ENV=production script/delayed_job restart"
end
end
# error
Missing the Rails 2.3.8 gem. Please `gem install -v=2.3.8 rails`, update your RAILS_GEM_VERSION setting in config/environment.rb for the Rails version you do have installed, or comment out RAILS_GEM_VERSION to use the latest version installed.
所有 gem 都使用 sudo 安装(/home/chris/.gem/... 文件夹实际上并不存在)
$ gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 1.6.2
- RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i686-linux]
- INSTALLATION DIRECTORY: /opt/ruby1.8/lib/ruby/gems/1.8
- RUBY EXECUTABLE: /opt/ruby1.8/bin/ruby
- EXECUTABLE DIRECTORY: /opt/ruby1.8/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86-linux
- GEM PATHS:
- /opt/ruby1.8/lib/ruby/gems/1.8
- /home/chris/.gem/ruby/1.8
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :benchmark => false
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/
capistrano 设置已设置为使用“chris”帐户执行部署。
任何想法为什么它找不到 rails gem?
【问题讨论】:
-
你能从机器(作为 chris 用户)访问 Rails 控制台(脚本/控制台生产)吗?如果是,Gem.path 会返回什么?
-
是的,rails 控制台可以正常加载,并且 Gem.path 返回的路径与运行
gem environment时显示的路径相同。问题是我可以在登录服务器时运行脚本,但不能通过 capistrano,但所有部署任务都可以通过 capistrano 正常运行。
标签: ruby-on-rails capistrano delayed-job