我做了bundle show
,并获得一个宝石目录的完整路径。
不幸的是,我使用删除目录rm -r gem_path
。 然后,我的Rails应用程序不能工作了。 如果我尝试启动服务器或启动轨道安慰它输出以下错误:
<class:Application>
:未初始化的常数MyAPP::Application::Gem
(NameError)
我应该怎么做才能找回它?
我试图bundle install
或bundle update
中强制捆绑搜索的创业板和安装回去的希望,但没有奏效。
我也试着删除Gemfile.lock
和运行bundle install
。 什么都没有改变,同样的错误。
有关创业板法作为加标签 。
Answer 1:
如果使用rbenv,这会让你完全卸载并重新安装一个宝石如rmagick:
第一:尝试一个简单的卸载/重新安装
gem uninstall rmagick
bundle install
如果还是不行,您可以删除已安装的宝石的所有痕迹。 寻找你的宝石安装位置:
bundle show rmagick
BUNDLE_DIR=$(dirname $(dirname $(bundle show rmagick)))
echo $BUNDLE_DIR
你的宝石安装前缀要么是默认比如~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0
或东西,你设置如.vendor
清除出宝石目录:
rm -rf $BUNDLE_DIR/gems/rmagick-*
清除编译宝石缓存:
rm $BUNDLE_DIR/cache/rmagick*.gem
同时清除掉捆绑的规格缓存:
rm $BUNDLE_DIR/specifications/rmagick*gemspec
然后你就可以重新安装:
bundle install
Answer 2:
您可以随时使用:
gem pristine acts-as-taggable-on
原始 - 恢复从位于宝石缓存文件安装宝石原始状态
如果你只是想恢复宝石为您应该运行当前项目:
bundle exec gem pristine acts-as-taggable-on
Answer 3:
首先,我做了一个gem q --L
,快捷的gem query --local
。 它输出我安装了所有当地的宝石。
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
跑bundle install
。 在那之后,我能够rails c
或rails s
同样没有任何问题。
Answer 4:
从终端项目目录
gem uninstall gem_name
Answer 5:
如果使用RVM与宝石~/.rvm/
,这个工作如果bundle
不重新安装一个宝石。
首先,删除宝石来源:
bundle show $GEM
rm -rf $PATH_TO_GEM
清除编译宝石缓存:
rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/cache/$GEM.gem
同时清除掉捆绑的规格缓存:
rm -rf ~/.rvm/gems/ruby-$RUBYVERSION[@$GEMSET]/specifications/$GEM*gemspec
然后你就可以重新安装:
bundle install
Answer 6:
如果您已经安装到./bundle/vendor
或类似的,你需要先删除宝石,但明确指定GEM_HOME,如
GEM_HOME=./vendor/bundle/ruby/2.3.0/ gem uninstall rmagick
这是迄今为止卸载使用捆绑成一个供应商目录中安装宝石最简单的方法。 理想的情况下,将有一个命令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
Answer 7:
如果你想重新安装耙, gem pristine rake
将失败,并Skipped rake-10.XX, it is a default gem
和捆绑也不会安装它,因为它无法卸载它。
如果您正在使用RVM,似乎最简单的是仅仅是做一个rvm reinstall 2.xx
。 至少对我来说, rvm repair all
也没有帮助。
同样可能也适用于其他所有默认的宝石。 我就一一列举,使绝望的Google找一些帮助:
- BigDecimal的
- 滴
- IO-控制台
- JSON
- MINITEST
- 迷幻
- 耙
- rbtree
- 的RDoc
- 测试单元
Answer 8:
bundle exec gem uninstall <gem_name>
-卸载从包宝石(所述<app_root>/vendor/bundle/ruby/2.3.0/gems/
路径)。 这相当于@ioquatix给出的答案,但他一直在寻找稍微更方便的解决方案。
gem uninstall <gem_name>
-只卸载从系统在全球宝石宝石
文章来源: How to reinstall a gem using bundler