0

最近、Bundler 1.1.3 を使用し、RVM を使用して Ruby 1.9.2 と Rails 3.0.0 を使用するという問題に遭遇しました。これは、1.9.2@rails300 を使用する古いプロジェクトがあったためです。何かがあり、簡単な解決策があるようには見えませんでした。

Rails、Bundler、およびほとんどすべてを自己完結型のプロジェクトにフリーズする方法は実際にありますか? sqliteまたはmysqlサーバーまたは実行可能ファイルは、同じコマンドに準拠しているため、凍結する必要はないと思います...しかし、DBと通信するレイヤーである宝石も凍結するのがおそらく良いでしょう。

4

2 に答える 2

0

bundler のおかげで、ruby、bundler、gem のバージョンを除くすべてをフリーズできるようになりました。これらには、自己整合性のあるバージョンが必要です。

gem セットに複数のバージョンの bundler がある場合、使用する bundler のバージョンを最初の引数として指定できます。

bundle _1.1.3_ ...

rails300 gem セットを使用する古いプロジェクトがあり、その gem セットのバージョンを変更できないという問題がある場合は、rvm を使用して ruby​​ 1.9 用の新しい gem セットを作成します。ただし、ruby、gem、bundler のバージョンが一致しない場合は、古いプロジェクトでも動作しないため、おそらくこれを修正する必要があります。

次のようにして、gem をフリーズできます (Rails は単なる gem または gem のコレクションです)。

bundle package

詳細については、bundler のドキュメントを参照してください。rvm で gemsets を使用している場合でも、バンドルをパッケージ化する必要があります。これは、rvm でも起動時に gem のバージョンが動的に決定されるためです。

于 2012-05-08T16:53:18.517 に答える
0

バンドラーでエラーが何であったかを特定していないので、あまり役に立ちませんが、これのほとんどは Gemfile で実行でき、残りは RVM で実行できます。次のように、gem の必要なバージョンを指定できます。

gem "rails", "3.2.3"

ちなみに、これはすべてバンドラーのドキュメントにあります。アプリケーションの依存関係が一貫した方法で確実に処理されるようにするためです。

次に、何らかの理由で特定のバージョンの ruby​​ が必要な場合は、それを rvmrc にダンプするだけで設定できます。

于 2012-05-08T16:37:43.330 に答える