2016-06-19 64 views
0

我正在做一些旧的代码库运行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。Bundler :: GemNotFound当执行延迟作业停止帽部署

一切工作正常我的本地机器上。当部署时,我在服务器上安装了rbenv(它没有RVM或rbenv)并安装了Ruby 2.1.5。

现在,部署脚本已经通过了bundle安装,但是当它试图执行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,它似乎工作。然而,它现在正在请求主动支持3.2.3,我不能强迫它使用它,因为Rails 3.2.19需要主动支持3.2.19。

据我所知,这不是late_job实际需要这些宝石的问题,因为1)它们将在安装捆绑软件时安装,或者如果存在无法解析的依赖关系,捆绑安装会投诉; 2)根据rubygems,delayed_job需要主动支持> = 3,所以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

嗯,我想通了。 RAILS_ENV=production script/delayed_job stop命令在current文件夹中执行,该文件夹是以前的版本。由于我使用rbenv强制使用Ruby 2.1.5,因此当前版本的Ruby尚未安装以前版本的宝石,这就是为什么delayed_job在抱怨。在current目录中运行bundle install修复了该问题。