2017-04-17 8 views
0

私はRails 4アプリケーションを持っています。いくつかの時間前に、bundle installbundle updateを実行した後、私はアプリケーションに問題が発生しました。私はファラデーの宝石がいくつかの問題を引き起こしていることを知り、他の宝石がそれに依存しているので、私はそれをアンインストールできません。その後私はbundle install/bundle updateコマンドを作成する前のプロジェクトバックアップを見つけました。当時の私のアプリケーションは素晴らしい仕事でした。古いGemfile.lockのように、インストールされている宝石とすべての依存バージョンを元に戻す方法

古いGemfile.lockと現在のGemfile.lockを比較すると、いくつかの宝石に新しいバージョンが追加されていることがわかりました。私はアプリケーションの問題の原因があると信じています。

oauth2 (1.3.1) 
     faraday (>= 0.8, < 0.12) 
     jwt (~> 1.0) 
     multi_json (~> 1.3) 
     multi_xml (~> 0.5) 
     rack (>= 1.2, < 3) 
    omniauth (1.4.2) 
     hashie (>= 1.2, < 4) 
     rack (>= 1.0, < 3) 
    omniauth-oauth2 (1.4.0) 
     oauth2 (~> 1.0) 
     omniauth (~> 1.2) 
    omniauth-yandex (0.0.2) 
     omniauth (~> 1.0) 
     omniauth-oauth2 (~> 1.0) 

私の古いGemfile.lockアプリケーションがとてもうまくいったときから:

oauth2 (1.3.0) 
    faraday (>= 0.8, < 0.11) 
    jwt (~> 1.0) 
    multi_json (~> 1.3) 
    multi_xml (~> 0.5) 
    rack (>= 1.2, < 3) 
omniauth (1.3.2) 
    hashie (>= 1.2, < 4) 
    rack (>= 1.0, < 3) 
omniauth-oauth2 (1.4.0) 
    oauth2 (~> 1.0) 
    omniauth (~> 1.2) 
omniauth-yandex (0.0.2) 
    omniauth (~> 1.0) 
    omniauth-oauth2 (~> 1.0 

私の現在および以前のGemfile

これらは私の現在のGemfile.lockに関連している唯一の宝石です

gem 'tinymce-rails' 
gem 'mysql2', '~> 0.3.18' 
gem 'humanizer' 
gem 'globalize', '~> 4.0.3' 
gem "paperclip", "~> 4.2" 
gem 'remotipart', '~> 1.2' 
gem 'mailcatcher', '~> 0.6.1' ,  group: :development 
gem 'rufus-scheduler', '~> 3.1.2' 
gem "omniauth-yandex" 
gem 'friendly_id', '~> 5.1.0' 
gem 'devise' 
gem 'rest-client', '~> 1.8' 
gem "cocoon" 

いくつかの宝石をダウングレードすることは可能ですか?古いGemfile.lockのバージョンへの依存関係?

私のアプリには、omniauth-yandexの宝石だけが必要です。

+1

Gemfileのバージョン指定をアプリケーションの必要なバージョンに変更し、もう一度 'bundle install'を実行してください。 Bundlerは必要なバージョンをリロードし、Gemfile.lockファイルを調整します。これはBundlerのドキュメントにあります。 –

+0

@theTinMan \tありがとうございます。私は指定されたバージョンのすべての宝石を追加して、私はバンドルの更新プログラムをインストール/正常にインストールします。しかし、バージョンは変わらずに同じままだった。何故ですか? – Edgars

答えて

2

宝石の特定のバージョンをファイルに追加するようにしてください。そうすれば、特定の宝石に必要な依存バージョンが得られます。

+0

ありがとうございました。私は指定されたバージョンのすべての宝石を追加して、私はバンドルの更新プログラムをインストール/正常にインストールします。しかし、バージョンは変わらずに同じままだった。何故ですか? – Edgars

+0

試してみよう: Gemfileのバージョンを変更したら、Gemfile.lockを削除してください。そして、 "bundle install"コマンドを実行します。 –

1

これまで数回、私のRailsアプリケーションで直面してきました。これはあなたが頻繁に直面するかもしれないものなので、Gitのようなバージョン管理システムを使用していることを確認することをお勧めします。宝石をインストールする前に、またはGemfile.lockをアップデートする前に(つまり、バンドルのインストールまたはバンドルのアップデートの実行)、以前の変更をコミットするようにしてください。そうすれば、プロジェクトのGemfile.lockファイルを以前の状態に戻す必要がある場合は、はるかに簡単です。変更をコミットする機会がなかった場合は、Gitのに慣れていない場合はHow to undo last commit(s) in Git?

であなたのコミットを元に戻すに別のStackOverスレッドがあります、https://git-scm.com/book/en/v2

で偉大な無料のオンライン書籍がありますようにします前に持っていたGemfileとGemfile.lockに戻ることができます。あなたの最善の策は、Vineethのように必要な宝石のバージョンを指定することです。を使用してGemfile.lockファイルを更新することを

bundle update 

:バンドラーのドキュメントを使用すると、参照が必要な場合はhttp://bundler.io/v1.5/gemfile.html#gemfiles

はあなたのGemfileでバージョンを指定した後、あなたが実行していることを確認してください。これを行う方法を乗り越えますあなたが必要とする特定のバージョン。

希望に役立ちます! :)

1

gemfileに特定のバージョンのgemを追加してバンドルインストールを実行すると、必要なすべての依存関係が更新されます。

0

Githubを使用している場合は、git revertを実行する可能性がありますか?

これは古いコミット(元に戻すコミットを選択)に戻り、コミット後の変更を削除します。

関連する問題