我在某个测试版本中开发了一个非常大的项目,该项目运行良好,但rspec
,Gemfile
和Gemfile.lock
存在问题。开发人员更新了一些宝石,但没有删除旧的Gemfile.lock
,因此我们没有对项目有任何问题,因为Gemfile
没有与项目崩溃。
TOO MANY提交之后,我发现了问题,我认为是宝石之间的差异。
当我复制并粘贴Gemfile.lock
的最新版本时,所有规格都运行良好,但如果我删除旧Gemfile.lock
并再次运行bundle install
项目将提出许多问题的规格我认为是gems版本,但我尝试安装我在旧Gemfile.lock
中的相同版本,我也有同样的问题,也有一些宝石找不到原始版本。
项目太大了,我无法更新Gemfile
,我认为其中一个可能的解决方案是使用程序将Gemfile.lock
转换为Gemfile
而不是我的规格有任何错误
这是我的旧版Gemfile.lock
,可以很好地运行我的rspec:
GEM
remote: https://rubygems.org/
specs:
aasm (3.0.3)
activerecord
actionmailer (3.2.1)
actionpack (= 3.2.1)
mail (~> 2.4.0)
actionpack (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
builder (~> 3.0.0)
erubis (~> 2.7.0)
journey (~> 1.0.1)
rack (~> 1.4.0)
rack-cache (~> 1.1)
rack-test (~> 0.6.1)
sprockets (~> 2.1.2)
active_median (0.0.1)
active_record_query_trace (1.5.4)
activemodel (3.2.1)
activesupport (= 3.2.1)
builder (~> 3.0.0)
activerecord (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
arel (~> 3.0.0)
tzinfo (~> 0.3.29)
activeresource (3.2.1)
activemodel (= 3.2.1)
activesupport (= 3.2.1)
activesupport (3.2.1)
i18n (~> 0.6)
multi_json (~> 1.0)
addressable (2.2.7)
akami (1.0.0)
gyoku (>= 0.4.0)
algorithms (0.5.0)
arel (3.0.2)
awesome_nested_set (2.1.6)
activerecord (>= 3.0.0)
bcrypt-ruby (3.0.1)
bluepill (0.0.66)
activesupport (>= 3.0.0, < 4.0.0)
daemons (~> 1.1.4)
i18n (>= 0.5.0)
state_machine (~> 1.1)
bourne (1.6.0)
mocha (~> 1.1)
builder (3.0.0)
cancan (1.6.7)
capistrano (2.11.2)
highline
net-scp (>= 1.0.0)
net-sftp (>= 2.0.0)
net-ssh (>= 2.0.14)
net-ssh-gateway (>= 1.1.0)
coffee-rails (3.2.2)
coffee-script (>= 2.2.0)
railties (~> 3.2.0)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.2.0)
columnize (0.9.0)
daemons (1.1.9)
database_cleaner (0.7.2)
debugger (1.6.8)
columnize (>= 0.3.1)
debugger-linecache (~> 1.2.0)
debugger-ruby_core_source (~> 1.3.5)
debugger-linecache (1.2.0)
debugger-ruby_core_source (1.3.8)
devise (2.0.4)
bcrypt-ruby (~> 3.0)
orm_adapter (~> 0.0.3)
railties (~> 3.1)
warden (~> 1.1.1)
devise_lastseenable (0.0.6)
devise
rails (>= 3.0.4)
diff-lcs (1.1.3)
erubis (2.7.0)
exception_notification (2.6.1)
actionmailer (>= 3.0.4)
execjs (1.3.0)
multi_json (~> 1.0)
factory_girl (3.0.0)
activesupport (>= 3.0.0)
factory_girl_rails (3.0.0)
factory_girl (~> 3.0.0)
railties (>= 3.0.0)
faraday (0.7.6)
addressable (~> 2.2)
multipart-post (~> 1.1)
rack (~> 1.1)
geocoder (1.1.1)
groupdate (1.0.4)
activerecord (>= 3.0.0)
gyoku (0.4.4)
builder (>= 2.1.2)
highline (1.6.11)
hike (1.2.1)
holidays (3.3.0)
httpi (0.9.6)
rack
i18n (0.6.0)
i18n-inflector (2.6.6)
i18n (>= 0.4.1)
journey (1.0.3)
json (1.6.5)
kaminari (0.13.0)
actionpack (>= 3.0.0)
activesupport (>= 3.0.0)
railties (>= 3.0.0)
mail (2.4.4)
i18n (>= 0.4.0)
mime-types (~> 1.16)
treetop (~> 1.4.8)
metaclass (0.0.4)
mime-types (1.18)
mocha (1.2.1)
metaclass (~> 0.0.1)
multi_json (1.1.0)
multipart-post (1.1.5)
net-scp (1.0.4)
net-ssh (>= 1.99.1)
net-sftp (2.0.5)
net-ssh (>= 2.0.9)
net-ssh (2.9.2)
net-ssh-gateway (1.1.0)
net-ssh (>= 1.99.1)
newrelic_rpm (3.15.2.317)
nokogiri (1.5.2)
nori (1.1.0)
oauth (0.4.5)
oauth-plugin (0.4.0.rc2)
multi_json
oauth (~> 0.4.4)
oauth2
rack
oauth2 (0.5.2)
faraday (~> 0.7)
multi_json (~> 1.0)
orm_adapter (0.0.7)
passenger (5.0.28)
rack
rake (>= 0.8.1)
pg (0.18.4)
polyglot (0.3.3)
rabl (0.6.2)
activesupport (>= 2.3.14)
multi_json (~> 1.1.0)
rack (1.4.1)
rack-cache (1.2)
rack (>= 0.4)
rack-protection (1.2.0)
rack
rack-ssl (1.3.2)
rack
rack-test (0.6.1)
rack (>= 1.0)
rails (3.2.1)
actionmailer (= 3.2.1)
actionpack (= 3.2.1)
activerecord (= 3.2.1)
activeresource (= 3.2.1)
activesupport (= 3.2.1)
bundler (~> 1.0)
railties (= 3.2.1)
railties (3.2.1)
actionpack (= 3.2.1)
activesupport (= 3.2.1)
rack-ssl (~> 1.3.2)
rake (>= 0.8.7)
rdoc (~> 3.4)
thor (~> 0.14.6)
rake (11.1.2)
rdoc (3.12)
json (~> 1.4)
redis (2.2.2)
redis-actionpack (3.2.1)
actionpack (= 3.2.1)
redis-rack (~> 1.4.0)
redis-store (~> 1.1.0)
redis-activesupport (3.2.1)
activesupport (= 3.2.1)
redis-store (~> 1.1.0)
redis-namespace (1.0.3)
redis (< 3.0.0)
redis-rack (1.4.1)
rack (= 1.4.1)
redis-store (~> 1.1.0)
redis-rails (3.2.1)
redis-actionpack (~> 3.2.1)
redis-activesupport (~> 3.2.1)
redis-store (~> 1.1.0)
redis-store (1.1.0)
redis (~> 2.2.0)
resque (1.20.0)
multi_json (~> 1.0)
redis-namespace (~> 1.0.2)
sinatra (>= 0.9.2)
vegas (~> 0.1.2)
resque-scheduler (2.0.0)
redis (>= 2.0.1)
resque (>= 1.20.0)
rufus-scheduler
resque_mailer (2.0.3)
actionmailer (>= 3.0.0)
resque (>= 1.2.3)
resque_spec (0.12.2)
resque (>= 1.19.0)
rspec (>= 2.5.0)
rspec (2.9.0)
rspec-core (~> 2.9.0)
rspec-expectations (~> 2.9.0)
rspec-mocks (~> 2.9.0)
rspec-core (2.9.0)
rspec-expectations (2.9.0)
diff-lcs (~> 1.1.3)
rspec-mocks (2.9.0)
rspec-rails (2.9.0)
actionpack (>= 3.0)
activesupport (>= 3.0)
railties (>= 3.0)
rspec (~> 2.9.0)
rufus-scheduler (2.0.17)
tzinfo (>= 0.3.23)
rvm-capistrano (1.0.2)
capistrano (>= 2.0.0)
sass (3.1.15)
sass-rails (3.2.5)
railties (~> 3.2.0)
sass (>= 3.1.10)
tilt (~> 1.3)
savon (0.9.9)
akami (~> 1.0)
builder (>= 2.1.2)
gyoku (>= 0.4.0)
httpi (~> 0.9)
nokogiri (>= 1.4.0)
nori (~> 1.1)
wasabi (~> 2.1)
shoulda-matchers (1.5.6)
activesupport (>= 3.0.0)
bourne (~> 1.3)
simplecov (0.6.1)
multi_json (~> 1.0)
simplecov-html (~> 0.5.3)
simplecov-html (0.5.3)
sinatra (1.3.2)
rack (~> 1.3, >= 1.3.6)
rack-protection (~> 1.2)
tilt (~> 1.3, >= 1.3.3)
slack-notifier (1.5.1)
sprockets (2.1.2)
hike (~> 1.2)
rack (~> 1.0)
tilt (~> 1.1, != 1.3.0)
sqlite3 (1.3.5)
state_machine (1.2.0)
strip_attributes (1.1.0)
activemodel (~> 3.0)
sugarcrm (0.9.18)
activesupport (>= 2.3.10)
i18n
json
thor (0.14.6)
tilt (1.3.3)
timecop (0.8.1)
timezone (0.99.2)
treetop (1.4.10)
polyglot
polyglot (>= 0.3.1)
typhoeus (0.3.3)
mime-types
tzinfo (0.3.49)
uglifier (1.2.3)
execjs (>= 0.3.0)
multi_json (>= 1.0.2)
vegas (0.1.11)
rack (>= 1.0.0)
warden (1.1.1)
rack (>= 1.0)
wasabi (2.1.0)
nokogiri (>= 1.4.0)
PLATFORMS
ruby
DEPENDENCIES
aasm
active_median
active_record_query_trace
algorithms
awesome_nested_set
bluepill
cancan
capistrano
coffee-rails (~> 3.2.1)
database_cleaner (~> 0.7.1)
debugger
devise
devise_lastseenable
exception_notification (~> 2.6.1)
factory_girl_rails
geocoder
groupdate
holidays
i18n-inflector
kaminari
net-ssh (= 2.9.2)
newrelic_rpm
nokogiri
oauth-plugin (>= 0.4.0.pre1)
passenger
pg
rabl (~> 0.6.0)
rails (= 3.2.1)
redis-rails
resque (~> 1.20.0)
resque-scheduler
resque_mailer (~> 2.0.3)
resque_spec
rspec-rails (~> 2.4)
rvm-capistrano
sass-rails (~> 3.2.3)
savon (~> 0.9.9)
shoulda-matchers (~> 1.5.0)
simplecov
slack-notifier (~> 1.5, >= 1.5.1)
sqlite3
strip_attributes (~> 1.0)
sugarcrm
timecop
timezone
typhoeus (~> 0.3.3)
tzinfo (~> 0.3.49)
uglifier (>= 1.0.3)
BUNDLED WITH
1.14.6
这是我尝试将Gemfile.lock
复制到Gemfile
:
source 'https://rubygems.org'
gem 'rails', '3.2.1'
gem 'pg', '~> 0.18.4', group: [:development, :test, :production]
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
group :production do
gem 'passenger', '~> 5.0.8'
# gem 'passenger', '~> 5.1.4'
end
gem 'devise'
gem 'devise_lastseenable'
gem 'cancan'
gem 'oauth-plugin', ">= 0.4.0.pre1"
group :test, :development, :vcr do
gem 'rspec', '~> 1.1.3'
gem "rspec-rails", "~> 2.99"
gem 'factory_girl_rails'
gem 'timecop'
gem 'shoulda-matchers', '~> 2.8.0'#, git: 'git://github.com/thoughtbot/shoulda-matchers.git'
gem 'debugger'
gem 'sqlite3'
gem 'database_cleaner', '~> 0.7.1'
gem 'simplecov'
end
group :test do
gem 'resque_spec'
end
gem 'rabl', '~> 0.6.0'
gem 'aasm'
gem 'net-ssh', '=2.9.2'
gem 'holidays', '~> 3.1.2'#, git: 'https://github.com/sincola/holidays.git'
gem 'capistrano', require: false
gem 'rvm-capistrano', require: false
gem 'newrelic_rpm', '~> 3.18.1'
gem 'i18n-inflector'
gem 'savon', '~> 0.9.9'
gem "typhoeus", "~> 0.3.3"
gem "exception_notification", "~> 2.6.1"
gem "strip_attributes", "~> 1.0"
gem 'resque', "~> 1.20.0"
gem 'resque_mailer', "~> 2.0.3"
gem 'resque-scheduler', :require => 'resque_scheduler'
gem 'kaminari'
gem 'redis-rails'
gem 'algorithms'
gem 'geocoder'
gem 'timezone', '~> 1.0'
gem 'sugarcrm'
gem 'bluepill'
gem 'groupdate'
gem 'active_median'
gem 'awesome_nested_set'
gem 'tzinfo', '~> 0.3.49'
gem 'active_record_query_trace' # source: https://github.com/ruckus/active-record-query-trace
gem 'slack-notifier', '~> 1.5', '>= 1.5.1'
gem 'nokogiri', '~> 1.6.5'
我的想法是:我的Gemfile.lock
中有不同的宝石在旧Gemfile.lock
请仔细阅读我的问题,如果你知道如何帮助我,我会无限地感谢你。
谢谢和问候,
答案 0 :(得分:1)
当您尝试运行bundle install时,某些gem会给出错误Your bundle is locked to xyz gem (version), but that version could not be found in any of the sources listed in your Gemfile
。要解决此类问题,您必须更新= xxx
中的确切版本Gemfile
而不是~> xxx
。
由于其他宝石的依赖性,您可能还需要在Gemfile.lock
更新锁定的宝石。
答案 1 :(得分:1)
Gemfile
不如Gemfile.lock
严格。因此,所有没有限制或软限制的Gems(例如,~> 4
或> 4.0
)都将更新为新版本,该版本可能不是代码所使用的版本。最初开发的,这就是为什么一些宝石可能会失败的原因。
我还没有时间对您将Gemfile.lock
复制到Gemfile
的尝试进行全面审核,但我看到您使用了一些宝石而未指定确切的版本Gemfile
我觉得这可能是你的问题。 Gemfile.lock
始终指定确切的版本,因此如果您要复制Gemfile.lock
,您应该这样做。例如,对于slack-notifier
gem,您使用的是版本1.5.1
,但Gemfile
有gem 'slack-notifier', '~> 1.5', '>= 1.5.1'
时应为gem 'slack-notifier', '1.5.1'