13

私は宝石に取り組んでおり、それはgithubにあります。

アプリケーションに宝石を含めるときは、capistrano デプロイを実行し、(サーバー上で) 実行します。

bundle outdated

そうですか:

 * authengine (0.0.1 d8baa49 > 0.0.1 de43dfa)

これは、より最近のコミットが利用可能であることを示しています。バンドルの更新 (capistrano デプロイの一部) で最新バージョンがプルされないのはなぜですか? ホスト アプリケーションの Gemfile にはバージョンの制約はなく、バージョン番号は同じですが、コミットが異なるだけです。

サーバーにログインして実行しても

bundle update authengine

その後、同じ「時代遅れの」結果が得られます。
ここで何が欠けていますか?

4

3 に答える 3

18

これを引き起こす可能性があることがわかったのは、バンドル内の他の gem がバージョンごとに互換性のない要件を作成している場合です。Bundler は、要件をすべて満たすことができるように gem のバージョンを選択することで、これらを調整しようとします。その結果、gem の更新を静かに拒否します。

これを確認する方法は、Gemfile で明示的なバージョン要件を設定することです。何かのようなもの

gem "authengine", "> 0.0.2" #(you'll need to bump the version to make this work)
#or
gem "authengine", :ref => "d8baa49"

次に実行します

bundle update authengine

次のようなものが表示されるはずです (これは私の特定のケースから取得したものです)。

Bundler は gem "json" の互換性のあるバージョンを見つけられませんでした: Gemfile: シェフ (> 10.8) ruby​​ は json (<= 1.6.1, >= 1.4.4) ruby​​ に依存しています

logical-construct (>= 0) ruby depends on
  json (1.7.5)

したがって、私の場合、新しいバージョンのjsonを明示的に要求することは問題です。

于 2012-10-25T23:41:17.530 に答える
2

実行すると返される出力は何bundle update authengineですか?それは実際にそれが宝石を更新したと言っていますか?それとも宝石を無視しますか?

--sourceパラメータを使用して、Bundlerにgitリポジトリを使用するように具体的に指示することができます。それ、またはあなたの

bundle update authengine --source https://github.com/mustardseeddatabase/authengine.git

また、このような予期しないことが起こったときは、一般的にジェムリストをクリーンアップするのが好きです。バンドラーで使用していない、古いバージョンのgemがまだ存在している可能性があります。

だからあなたはすることができます:

gem list
gem check
gem cleanup

または、完全に再インストールします

gem uninstall authengine
bundle install
于 2012-06-22T16:03:05.900 に答える