2012-04-17 11 views
1

我有一個使用Ruby 1.9.2的Rails 3.0.0項目。現在,我想一個新的電腦與當前RVM上運行它,它會說:對於Rails,如果有一個使用Rails 3.0.0的項目,它會查找bundler 1.0.0並且它在那裏,但是rails服務器不會運行?

$ rails s 
/Users/michael/.rvm/gems/[email protected]/gems/bundler-1.1.3/lib/bundler/resolver.rb:129:in `block in resolve': Bundler could not find compatible versions for gem "bundler": (Bundler::VersionConflict) 
    In Gemfile: 
    rails (= 3.0.0) ruby depends on 
     bundler (~> 1.0.0) ruby 

    Current Bundler version: 
    bundler (1.1.3) 

,但我已經習慣

gem install rails -v 3.0.0 
gem install bundler -v 1.0.0 
gem install bundler -v 1.0.2 

,這樣,當我gem list,我會看到

bundler (1.1.3, 1.0.22, 1.0.0) 
rails (3.0.0) 

那麼爲什麼還在抱怨Rails 3.0.0需要捆綁器1.0.0而它不在那裏呢?如何使項目再次運行?

更新:我的Gemfile主要是除註釋:

source 'http://rubygems.org' 

gem 'rails', '3.0.0'  
gem 'sqlite3-ruby', :require => 'sqlite3' 

更新2:如果我跑bundle check

$ bundle check 
Your Gemfile's dependencies could not be satisfied 
Install missing gems with `bundle install` 

$ bundle install 
Fetching gem metadata from http://rubygems.org/......... 
Bundler could not find compatible versions for gem "bundler": 
    In Gemfile: 
    rails (= 3.0.0) ruby depends on 
     bundler (~> 1.0.0) ruby 

    Current Bundler version: 
    bundler (1.1.3) 

This Gemfile requires a different version of Bundler. 
Perhaps you need to update Bundler by running `gem install bundler`? 
+0

你的Gemfile是什麼樣的? – 2012-04-17 05:25:44

+0

請參閱更新 – 2012-04-17 05:29:01

+0

運行'bundle check'並顯示爲輸出。 – jdoe 2012-04-17 05:33:58

回答

1

的問題是,你有三個版本的捆綁(1.1.3, 1.0.22,1.0.0)。你的應用程序只需要1.0.0。而當你運行服務器時,它使用1.1.3。

所以首先卸載2打捆此命令

 gem uninstall bundler -v=1.1.3 

     gem uninstall bundler -v=1.0.22 

然後運行服務器將確保工作....

+1

如果我輸入'gem uninstall bundler -v = 1.1.3'它會說 'INFO:gem「bundler」未安裝... ...如果我創建了一個全新的gemset和gem list,那麼它會列出bundler 1.1.3,但是當使用卸載行時,它也會說bundler沒有安裝 – 2012-04-17 11:03:36

1

您可能需要運行軌道和耙打捆上下文中:

bundle exec rails s 

DITT與耙命令,例如,

bundle exec rake -T 

Here's a SO thread可鏈接到更深入的文章。另外,如果你感到煩惱,還有很多關於如何避開它的喋喋不休的問題。就我個人而言,我最常用的命令是別名,所以我甚至沒有注意到。

1

只需將Bundler添加到您的gemfile中即可鎖定用於該項目的捆綁軟件的版本。

gem 'bundler', '1.1.0' 

如果你這樣做,你不需要卸載捆紮機,您可以使用具有不同的依賴其他項目其中的其他版本。

對於任何rails命令,您也不應該使用bundle exec,因爲Rails是捆綁器感知的並且將始終運行在當前捆綁的上下文中。非Rails命令需要`bundle exec'。

相關問題