2017-04-04 6 views
0

私はリモートでアプリケーションを実行していますが、railsをバージョン4.2.8にアップグレードしました。私はその後service unicorn restartを走ったが、ユニコーンのログは私に、このエラーを与える:ユニコーン5.2.0を既に有効にしていますが、Gemfileにユニコーンが必要です。5.3.0

You have already activated unicorn 5.2.0, but your Gemfile requires unicorn 5.3.0. Prepending bundle exec to your command may solve this. (Gem::LoadError)

また、私は正常に返され、正常に返さgem uninstall unicorn -v 5.2.0を試みたが、その後、gem install -v 5.3.0ています。その後、service unicorn restartを実行しましたが、エラーは解決しません。

私はbundle execの提案に気付きましたが、私はこのコマンドの前に何を置くべきかわかりません。

答えて

1

gemfile.lockファイルを削除してから、もう一度bundle installを実行してください。これにより、通常はgemの競合がソートされます。

+0

おかげさまで、ありがとうございました。今私はunicornを開始しようとするとこれを得ています: 'masterは起動できませんでした。stderrログで詳細を確認してください。 ' 'unicorn.stderr.log'は' unicorn.rb'設定ファイルではありません(宝石だけが表示されます)。私は自分の問題の大半がそこにあると思う。あなたはこの場合の提案はありますか? – Tuma

+1

私はユニコーンを一度も使ったことがありません:(あなたが 'bundle show unicorn'と入力すると、その宝石に関連するすべてのファイルがどこに保存されているかを表示するはずですが、残念なことに助けてくれない以外は – Mark

+0

私は削除しません。 gemfile.lock。それはその価値よりも厄介な傾向があります。 – Tyler

0

これは、マシン上で実行されているユニコーンのバージョンが、アプリケーションで指定されているバージョンと異なることを意味します。 service unicornはおそらくあなたのアプリケーションバージョンのユニコーンを指していないサーバー/コンピュータにインストールされたユニコーンを指しているでしょうか?それがアプリケーションを起動すると、アプリケーションは別のバージョンのgemをロードしようとしています。

bundle exec unicorn - How to start rails server in production mode using unicorn and config file?のように、アプリのコンテキスト内でunicornを実行することもできます。

0

解決策が見つかった場合は、いいです。そうでない場合は、次回、[email protected]のような独特の宝石を使って新しいレールアプリを作成してください。 この方法では、リモートサーバーに展開するときに、この種の宝石の競合を避けることができます。

0

これは、マシン上の宝石用に2つの異なるソースがあることが原因です。

gemsetsでRVMのようなものを使用する場合は、正しいジェムセットを使用していることを確認してください。特に、gem installgem uninstallがシステム全体の宝石ではなく、アプリケーション特有の宝石セットに作用することを確認してください。詳細はhttps://rvm.io/gemsetsにあります。

Bundlerは、アプリケーションごとに別々のジェムセットも生成します。したがって、bundlerを使用する場合は、すべてのコマンドにbundle exec(たとえばbundle exec rspec spec)を付けて実行する必要があります。バンドルからGemを削除したい場合は、GemfileからGemfileを削除してからbundle update gem_in_questionを実行してください(Gemfile.lockも更新されます)。 http://bundler.io/v1.14/guides/using_bundler_in_application.html#executing-commands---bundle-execに詳細があります。

あなたの問題解決に役立つことを願っています。

関連する問題