2016-05-22 5 views
1

私のGemfileには、悲観的な演算子~>を使用して宝石のバージョンを指定する.gemspecを持つ宝石が含まれています。しかし、私は新しいバージョンのgemを使う必要があります。私の場合、私はactivemerchantセットを持っていますまくる3-0-安定を使用しています「〜> 1.47.0」にhttps://github.com/spree/spree/blob/3-0-stable/core/spree_core.gemspec#L22が、私は、バージョン1.59を指定しようとしたアクティブ商人「〜> 1.59.0」別のgem依存関係で指定されたgemバージョン

を使用する必要があります。あなたが要求した

:と私のGemfileで0が、バンドルは文句 activemerchant〜> 1.59.0

バンドルは現在、1.47.0でロックactivemerchantました。 bundle update

しかし、コマンドbundle update activemerchantだけ1.47.x.に更新するにそれらすべてを を渡してみてください、一度あなたがあなたのGemfileに複数の宝石を更新する場合は bundle update activemerchant

を実行してみてください

これを達成する方法は何ですか?自分自身をフォークし、.gemspecを更新するのとは別に?明らかに、アクティブな宝石を更新すると、宝石の宝石が壊れる可能性があります。しかし、私は自分のアプリでテストすることができます。

+4

私が知る限り、酒宴を忘れることが唯一の方法です。 –

+0

私はあなたのアプリで同じ宝石の2つのバージョンを同時に使うことはできません。 Bundlerは強制的に1つのバージョンに解決します。 –

答えて

0

これはできません。rubygemsシステムでは許可されていません。上流のgem依存関係の問題を提出し、要件を緩和するように依頼しなければなりません。

あなたが望んでいるスプレーのバージョンで実際に動作しないようにするためには、アクティブマーチャントのバージョンが壊れている可能性があります。もしそうなら、新しいバージョンのactivemerchantで動作するように、コードを修正する必要があります。あるいは、あなたが望むバージョンでうまくいくかもしれませんが、spreeの制限は間違いなく不必要に厳格です。その場合、spree gemspecを変更するだけでそれを許可する必要があります。

しかし、spree gemspecを変更せずにこの設定を上書きする方法はありません。

あなたはgemspecを変更することができますが、spreeがあなたが望むactivemerchantのバージョンで実際に動作するかどうかはわかりませんが、それは危険である可能性があります。今ではあなた自身のフォークになっているので、フォークの変更をマージせずに新しいバージョンのスプレーにアップグレードすることはできません。

もう1つのことは、実際にリリースされたgemの代わりにspree 3-0-stableブランチをオフにしてください。しかし、私は酒宴のリリース管理慣行に精通していない、おそらくこれは彼らが奨励しているものですか?いずれにせよ、これを変更しても問題は解決されません。

アプリが比較的新しいか単純な場合は、スプーリーからsolidusへの切り替えを検討することができます。ソリッドスはフリーズ2.xでフォークオフしたので、アプリが確立されていてやや複雑な場合は、スプリー3.xからの移行が簡単ではないかもしれません。 solidus_core gem is also lockedからactivemerchant ~> 1.48.0までですが、activemerchant 1.48.x以外は許可しません。 solidusチームは、もしあなたがそれがどうなっているのかを尋ねたいのであれば、スラックチャンネルにかなり反応します。私はsolidusのメンテナが非常に反応が良いことを発見しました。それが実行可能であれば、activemerchantのそれ以降のバージョンを許可することに興味がありそうです。私は現在のSpreeチームと、ユーザーとのやりとり(彼らが余裕がない、リストサーブをしている、githubの問題に反応している、など)についてはよく知らないが、もちろん同じ会話をすることができる。

関連する問題