rake 0.9.0は​​すでに有効化されていますが、Gemfileにはrake 0.8.7が必要です


124

Railsプロジェクトを実行しようとしています。

Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

行う場合:「バンドルインストール」

しかし私は得ています

You have already activated rake 0.9.0, but your Gemfile requires rake 0.8.7

しながら

rake db:migrate

回答:


245

まず、Gemfileにrakeが含まれていることを確認してください。そうでない場合は、追加して、「すでにアクティブ化されている」バージョンを指定します。

次に、バンドルに、アプリで使用しているRakeバージョンを更新するように指示する必要があります。

bundle update rake

更新さGemfile.lockれます。


2
これは私にはうまくいきませんでした。このコマンドを実行すると、「バンドルインストール」とまったく同じことが行われ、同じrakeバージョンを使用していることが示されます。更新されません。
EE33、2011年

5
gemfile.lockが正しく更新されるように、gem 'rake'、 'version#'をgemfileに追加し、 'bundle update rake'を実行する必要がありました。このソリューションをうまく機能させることができなかった人のための参考までに。
EE33、2011年

44

現在、次のようなrakeコマンドを使用している場所

rake db:migrate

代わりにこれを使用してください:

bundle exec rake db:migrate

これは、最新バージョンのレールやレーキがうまく機能するまで当てはまります。


3
「最新バージョンのrailsおよび/またはrake」がうまく機能することについてのビットは、特定の名前のない時点で、使用中のワークフローに関する特定の仮定の下でのみ意味を持ちます。これは、「最先端のレールを使用していて、レーキがまだ追いついていない」ことを意味していると思います。しかし、そのケースは、「バンドルexec」または「Gemfileの編集」のいずれかのアプローチでも解決できます。これらのアプローチは、本質的な互換性の問題がなく、混乱したワークフロー履歴のみがある場合にも問題を解決します。
jackr

24

ドブリー・デンに感謝します。しかし、もう少ししなければなりませんでした。ここに解決策があります(私にとってはうまくいきます)。追加した

gem 'rake','0.8.7'

Gemfileにはありませんでしたが、私の新しいバージョンのRailsは自動的にrake(0.9.0)をインストールします。

でrake0.9.0を削除した後、を実行gem uninstall rake した後bundle update rake、データベースを作成して移行できます。



7

Gemfileで必要なバージョンを指定します。

gem 'rake', '0.9.0' 

その後

bundle update rake

rakeタスクを実行するにはbundle execを使用する必要があります

bundle exec rake db:migrate

新しいバージョンを「非アクティブ化」しないようです。ただし、Rakeを完全に削除して再インストールしても動作します。
JosephK

6

ああ見て、それは未来です。私にとっては、0.9.5が必要なときに、rake 10.xがインストールされていると不平を言っていました。よくわからない、最近のバージョン番号で何が起こったのかを本当に掘り下げるのに十分なほどRubyに精通していないが、私がしたことは:

gem uninstall rake
gem install rake -v 0.9.5

アプリに必要なバージョンのrakeをシステムに強制的にインストールします(私にとってはOctopressでした)。


2
未来が呼ばれ、それはあなたのハンマーパンツを借りたいです。
キース・レイン、2013年

こんにちは、また未来です。ついにハンマーパンツが復活したそうです。
サブディジット

5

私はこの問題を抱えていました(熊手ではない別の宝石を使って)、それを修正することができました

gem uninstall <complaining gem>
gem install <complaining gem>

bundle install
bundle update

キーワード「sudo」は使用されなかったことに注意してください(つまり、sudo bundle install)。これは、Railsアプリが検索していないディレクトリにGemを配置する可能性があるためです。


3

私があなたが求めていないことを理解しているなら、あなたはあなたを開く必要があります Gemfileファイル行を変更 ...

gem 'rake', '0.8.7'

...に...

gem 'rake', '0.9.0'

0.9ではなく0.8.7を使用したい場合はどうなりますか?
Kir、

6
rake gemはRailsの依存関係であるため、デフォルトではGemfileで指定されていません。rake gemを0.9.0に更新した場合でも、システムには0.8.7 gemが残っています(で確認gem list)。gem 'rake', '0.8.7'あなたのでまだ指定されている場合でもGemfile.lock、問題なく0.8.7 gemを使用することは間違いありません。そうでない場合は、Gemfile(.lockではありません)bundleに追加してgem 'rake', '~> 0.8.7'から実行してみて、何かが表示されるかどうかを確認してください。
danneu

@Dobry Denに同意します。
Olivier

gem 'rake'は定義されていません。複数のGem Rake(0.8.7および0.9.0)がある場合は、デフォルトの1つが使用されます。デフォルトを古いものにできますか?
Mujah Maskey、2011

3

これをGemfileに追加します

# Rake 0.9.0 break Rails.
gem "rake", "!= 0.9.0"

そして、rake-0.9.0をアンインストールします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.