1

Ruby 1.9.2 を使用していた Rails 3.0.0 プロジェクトがあります。現在のrvmを使用して新しいコンピューターで実行しようとしたので、次のように表示されます。

$ rails s
/Users/michael/.rvm/gems/ruby-1.9.2-p318@global/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 には bundler 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`?
4

3 に答える 3

1

Bundlerをに追加するだけgemfileで、そのプロジェクトで使用するバンドラーのバージョンをロックできます。

gem 'bundler', '1.1.0'

これを行う場合、依存関係が異なる他のプロジェクトで使用している可能性のある他のバージョンのBundlerをアンインストールする必要はありません。

Railsはバンドラーに対応しており、常に現在のバンドルのコンテキストで実行されるため、コマンドbundle execに使用する必要はありません。railsRails以外のコマンドには`bundleexec'が必要です。

于 2012-04-18T12:47:56.413 に答える
1

問題は、3つのバージョンのバンドラー(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

次に、サーバーを実行すると、確実に機能します。

于 2012-04-17T05:36:56.520 に答える
1

bundler コンテキスト内で rails と rake を実行する必要がある場合があります。

bundle exec rails s

あなたのrakeコマンドでDitt、例えば、

bundle exec rake -T

これは、より詳細な記事へのリンクを含む SO スレッドです。また、イライラした場合の回避方法についてもたくさんおしゃべりします。個人的には、最も一般的なコマンドに別名を付けているので、気付かないほどです。

于 2012-04-17T20:48:06.137 に答える