2012-03-05 3 views
1

これは明らかな問題かもしれませんが、私はベストプラクティスのためにグーグルグーグルで問題を抱えています。私はRails 3.0とBundlerを使用しています。私はどのように私のレールプロジェクトの宝石をロックダウンするのですか?

私は自分の仕事用ノートパソコンでRailsアプリケーションを開発し始めました。私はgemファイルにgemの名前を追加し、バンドルのインストールを実行しました。私がこれをしたとき、私は必要な宝石のバージョンにあまり注意を払わなかったので、Bundlerに最新バージョンをインストールさせました。すべてがうまくいきました。

私はこのアプリをHerokuにプッシュして、ちょうどうまくいった。

  1. 私のGemfile.lockファイルで定義されているgemバージョンを使用しているのはHerokuですか?あるいは、Gemfileを使って最新のバージョンを取り出してインストールしていますか?

    その後、新しいノートパソコンを手に入れました。だから私はそのノートパソコンでgit repoをクローンすることにしました。私はRVMをインストールし、GitHubからリポジトリをクローンし、バンドルをローカルにインストールしました。問題は、私がGemfileに宝石のバージョンを指定しなかったので、bundle installを実行すると最新のgemのバージョンがダウンロードされたということでした。私はいくつかのCSSの変更を加え、Herokuにプッシュし、アプリが壊れていることを察知しました。どうやらペーパークリップの宝石には今や他の何かの宝石か何か他のものが必要です。

    私はGemfile.lockのgitログを見て、以前の作業用のpaperclipを見つけて、そのバージョン番号をGemfileに入れました。 herokuに退却し、それは再び働いている。

  2. どうすればこの問題が発生しないようにすることができますか?私はいつも私のGemfileにgemのバージョン番号を入れておくべきですか?私は私の宝石(私は前にやったことがない、それを行う方法)を納得させるべきですか?

+1

あなたは確かに*最新バージョンをインストールしましたか?リポジトリにGemfile.lockファイルをチェックインしていませんでしたか? –

+0

はいGemfile.lockをレポにチェックインしました。しかし、新しいラップトップにバンドルインストールを実行すると、最新のgemのバージョンが取得され、ローカルのGemfile.lockが上書きされました。 – Homan

+0

これが実際に起こった場合は、Bundlerにバグがあります。最新バージョンのBundlerを使用していることを確認し、この動作を確実に再現できる場合は、[報告する](https://github.com/carlhuda/bundler/issues/new)を参照してください。 –

答えて

1

質問1は、宝石をGemfileに宣言されている方法によって異なります。gem "omniauth"を宣言たとえば、あなたは正確に得るでしょうあなたがgem "omniauth", "0.3.4"を指定した場合ながら、時間をコンパイル/デプロイでHerokuのGemfile.lockに最後omniauth宝石をバンドルしますヘロクの "0.3.4"

Vendoringはレール> = 3.2.2

で非推奨とはい、Gemfileにすべてのあなたの宝石のバージョンを指定することをお勧めしますとされますが、一度のdoIt 1入れた後、ローカルbundle update omniauthを実行して更新する必要がある場合Gemfileの新しいバージョン...

+0

なぜ売り手は非難されていますか?古い宝石のバージョンがもはや利用できない場合はどうなりますか? – Homan

+0

それは当てはまりません。 Gemfile.lockを変更する唯一のコマンド(すでに存在していると仮定します)は 'bundle update 'です。 –

+0

@sketchfemmeベンダーは、物事を管理するのが難しいため廃止されました。 Rubygems上で利用可能だった宝石は、ルビー宝石が利用できる限り、引き続き利用可能です。orgが稼働しているので、私は本当に懸念を見ません。ベンダーはRails 4.0で廃止される予定です。 –

関連する問題