web-dev-qa-db-ja.com

bundlerを使用してgemを再インストールする方法

bundle showを実行し、gemディレクトリへの完全なパスを取得しました。

残念ながら、rm -r gem_pathを使用してディレクトリを削除しました。その後、Railsアプリはもう動作していません。サーバーを起動しようとすると、Rails consoleを起動すると、次のエラーが出力されます。

<class:Application>:初期化されていない定数MyAPP::Application::Gem(NameError)

元に戻すにはどうすればよいですか?

バンドルでgemを検索してインストールし直すことを期待してbundle installまたはbundle updateを試しましたが、うまくいきませんでした。

また、Gemfile.lockを削除してbundle installを実行しようとしました。何も変更されていません、同じエラー。

問題の宝石は タグ付け可能として動作( です。

56
waldyr.ar

最初に、gem q --Lのショートカットであるgem query --localを実行しました。インストールされているすべてのローカルgemを出力します。

actionmailer (3.2.8, 3.2.6, 3.2.1, 3.1.0)
actionpack (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activemodel (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activerecord (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activeresource (3.2.8, 3.2.6, 3.2.1, 3.1.0)
activesupport (3.2.8, 3.2.6, 3.2.1, 3.1.0)
acts-as-taggable-on (2.3.3)
...

そして、DVGのアドバイスに従って、正しい名前gem uninstall acts-as-taggable-onを使用してgemをアンインストールし、bundle installを実行しました。その後、問題なくRails cまたはRails sを再度実行できました。

14
waldyr.ar

Rbenvを使用する場合、これにより、rmagickなどのgemを完全にアンインストールおよび再インストールできます。

最初:簡単なアンインストール/再インストールを試してください

gem uninstall rmagick
bundle install

それでもうまくいかない場合は、インストールされているgemのすべてのトレースを削除できます。 gemのインストール場所を見つけます。

bundle show rmagick
BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick)))
echo $BUNDLE_DIR

Gemインストールプレフィックスはデフォルトのいずれかです。 ~/.rbenv/versions/2.2.2/lib/Ruby/gems/2.2.0またはあなたが設定した何か。 .vendor

Gemディレクトリをクリアします。

rm -rf $BUNDLE_DIR/gems/rmagick-*

コンパイルされたgemキャッシュをクリアします。

rm $BUNDLE_DIR/cache/rmagick*.gem

また、バンドラーのスペックキャッシュをクリアします。

rm $BUNDLE_DIR/specifications/rmagick*gemspec

その後、再インストールできます。

bundle install
53
werkshy

いつでも使用できます:

gem pristine acts-as-taggable-on

pristine-インストールされたgemをgemキャッシュにあるファイルから初期状態に復元します

現在のプロジェクトのgemを復元するだけの場合は、次を実行する必要があります。

bundle exec gem pristine acts-as-taggable-on

38
Calin

ターミナルのプロジェクトディレクトリから

gem uninstall gem_name 
11
Sazzad

~/.rvm/のgemで [〜#〜] rvm [〜#〜] を使用すると、bundleがgemを再インストールしません。

まず、gemソースを削除します。

bundle show $GEM
rm -rf $PATH_TO_GEM

コンパイルされたgemキャッシュをクリアします。

rm -rf ~/.rvm/gems/Ruby-$RUBYVERSION[@$GEMSET]/cache/$GEM.gem

また、バンドラーのスペックキャッシュをクリアします。

rm -rf ~/.rvm/gems/Ruby-$RUBYVERSION[@$GEMSET]/specifications/$GEM*gemspec

その後、再インストールできます。

bundle install
9
JosephL

./bundle/vendorなどにインストールした場合、まずgemを削除する必要がありますが、GEM_HOMEを明示的に指定する必要があります。

GEM_HOME=./vendor/bundle/Ruby/2.3.0/ gem uninstall rmagick

これは、Bundlerを使用してインストールされたgemをベンダーディレクトリにアンインストールする最も簡単な方法です。理想的には、コマンドbundle uninstallまたはbundle reinstallなどがあります。

単に再インストールすることが目的の場合、次のコマンドが役立ちます。

GEM_HOME=./vendor/bundle/Ruby/2.3.0/ gem uninstall rmagick && Sudo -u http bundle install

あなたが私のようで、ディレクトリの下にいくつかのWebアプリケーションがある場合(例:/srv/http)、以下はすべてのディレクトリでそれを行います:

cd /srv/http
for d in ./*/ ; do (cd "$d" && Sudo -u http GEM_HOME=./vendor/bundle/Ruby/2.4.0/ gem uninstall --force rmagick && Sudo -u http bundle install); done
5
ioquatix

bundle exec gem uninstall <gem_name>-バンドルからgemをアンインストールします(<app_root>/vendor/bundle/Ruby/2.3.0/gems/ 道)。これは@ioquatixが答えたのと同じですが、彼が探していたもう少し便利なソリューションです。

gem uninstall <gem_name>-システムのグローバルgemsetからのみgemをアンインストールします

4
Magne

Rakeを再インストールしようとすると、gem pristine rakeSkipped rake-10.X.X, it is a default gemで失敗し、アンインストールできないためバンドルもインストールされません。

Rvmを使用している場合、最も簡単だったのはrvm reinstall 2.x.xを実行することでした。少なくとも私にとっては、rvm repair allも役に立たなかった。

他のすべてのデフォルトgemについても同様です。ここにそれらをリストして、必死のグーグルが助けを見つけるようにします:

  • 十進法
  • 滴下
  • io-console
  • json
  • ミニテスト
  • サイケ
  • 干し草・落ち葉などをかき集めるための)くま手、(土をならすための)まぐわ
  • rbtree
  • rdoc
  • テストユニット
3
MattW.