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
を実行しようとしました。何も変更されていません、同じエラー。
問題の宝石は タグ付け可能として動作( です。
最初に、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
を再度実行できました。
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
いつでも使用できます:
gem pristine acts-as-taggable-on
pristine-インストールされたgemをgemキャッシュにあるファイルから初期状態に復元します
現在のプロジェクトのgemを復元するだけの場合は、次を実行する必要があります。
bundle exec gem pristine acts-as-taggable-on
ターミナルのプロジェクトディレクトリから
gem uninstall gem_name
~/.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
./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
bundle exec gem uninstall <gem_name>
-バンドルからgemをアンインストールします(<app_root>/vendor/bundle/Ruby/2.3.0/gems/
道)。これは@ioquatixが答えたのと同じですが、彼が探していたもう少し便利なソリューションです。
gem uninstall <gem_name>
-システムのグローバルgemsetからのみgemをアンインストールします
Rakeを再インストールしようとすると、gem pristine rake
はSkipped rake-10.X.X, it is a default gem
で失敗し、アンインストールできないためバンドルもインストールされません。
Rvmを使用している場合、最も簡単だったのはrvm reinstall 2.x.x
を実行することでした。少なくとも私にとっては、rvm repair all
も役に立たなかった。
他のすべてのデフォルトgemについても同様です。ここにそれらをリストして、必死のグーグルが助けを見つけるようにします: