我正在使用运行Ruby 1.9.3和Rails 3.2.3的旧代码库进行一些工作。但是,我不得不更新到Ruby 2(我选择2.1.5,因为我过去曾使用它)来修复使用PayPal API时出现的SSL错误(我的任务是为信用卡实现PayPal)处理)。这导致资产管道出错,经过一些调查后我发现Rails 3.2.3不支持Ruby 2.1.5,所以我不得不升级到Rails 3.2.19。
在我的本地计算机上一切正常。在部署时,我在服务器上安装了rbenv(它没有RVM或rbenv)并安装了Ruby 2.1.5。
现在,部署脚本已经过了捆绑安装,但是当它尝试执行cd /var/www/cappwww/current && RAILS_ENV=production script/delayed_job stop
时,它会阻塞并说Could not find *** in any of the sources (Bundler::GemNotFound)
。
" ***"只是一个占位符;这首先发生在i18n,然后是multi_json。我手动更改了这些宝石的请求版本并运行bundle update
,它似乎工作。但是,现在它正在请求activesupport 3.2.3,我不能强制它使用它,因为Rails 3.2.19需要activesupport 3.2.19。
据我所知,这不是delayed_job实际需要这些宝石的问题,因为1)它们将在捆绑安装期间安装,或者如果存在无法解析的依赖关系,则捆绑安装会抱怨,并且2 )delayed_job需要activesupport> = 3根据rubygems,所以3.2.19应该做得很好。
似乎由于某种原因,delayed_job脚本正在寻找一个非常具体的gemset,特别是旧的gemset。但是,我不知道是什么导致它做到这一点。
我的Gemfile是
source 'http://rubygems.org'
gem 'rake', '10.1.1'
gem 'rmagick'
gem 'rails', '3.2.19'
gem 'devise', '2.0'
gem 'haml', '3.1.4'
gem 'sass', '3.2.3'
gem 'formtastic', '2.1.0.rc'
gem 'cocaine', '0.3.2'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
#gem 'mysql2', '0.2.6'
gem 'mysql2', '0.3.11'
#gem 'less', '~> 2.0.8'
gem 'less', '~> 2.2.1'
gem 'tinymce-rails', '3.5.8'
gem 'will_paginate', '3.0.3'
gem 'country_select', '1.0.1'
gem 'paypal-sdk-rest'
# Use unicorn as the web server
gem 'unicorn'
gem 'jquery-rails', '2.1.4'
gem 'paperclip', '3.2.1'
gem 'feedzirra', '0.0.24'
gem 'delayed_job', '4.1.0'
gem 'delayed_job_active_record', '4.1.0'
gem 'daemons', '1.1.9'
gem 'therubyracer', '0.12.0'
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
# gem 'ruby-debug'
# gem 'ruby-debug19'
# Bundle the extra gems:
# gem 'bj'
# gem 'nokogiri'
# gem 'sqlite3-ruby', :require => 'sqlite3'
# gem 'aws-s3', :require => 'aws/s3'
gem 'rsolr', '1.0.7'
gem 'sunspot', '1.3.3'
gem 'sunspot_solr', '1.3.3'
gem 'sunspot_rails', '1.3.3'
gem 'hpricot', '0.8.6'
gem 'roadie', '2.3.4'
group :assets do
gem 'sass-rails'
gem 'uglifier'
end
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development, :test do
# Deploy with Capistrano
gem 'capistrano', '2.13.5'
gem 'capistrano-rbenv'
gem 'rspec-rails', '~> 2.6'
gem 'machinist', '2.0'
gem 'faker', '1.0.1'
gem 'syntax', '1.0.0'
gem 'progress_bar', '0.4.0'
end
group :development do
gem 'active_record_query_trace', '1.1'
end
任何帮助都会非常感激,因为我远远超过了我的头脑。
答案 0 :(得分:0)
好吧,我明白了。 RAILS_ENV=production script/delayed_job stop
命令正在current
文件夹中执行,该文件夹是先前版本。由于我使用rbenv强制使用Ruby 2.1.5,因此尚未为当前版本的Ruby安装以前版本的gem,这就是delayed_job抱怨的原因。在bundle install
目录中运行current
修复了该问题。