我做了一个 bundle show
并获得了一个gem目录的完整路径 .
不幸的是,我使用 rm -r gem_path
删除了目录 . 然后我的rails应用程序不再工作了 . 如果我尝试启动服务器或启动rails控制台,则会输出以下错误:
<class:Application>:未初始化的常量MyAPP :: Application :: Gem(NameError)
What should I do to have it back?
我试图 bundle install
或 bundle update
希望强制捆绑搜索gem并重新安装,但是没有用 .
我也尝试删除 Gemfile.lock
并运行 bundle install
. 什么都没有改变,同样的错误 .
有问题的宝石是Act as taggable on .
8 回答
如果使用rbenv,这将让你完全卸载并重新安装一个gem,如rmagick:
第一:尝试简单的卸载/重新安装
如果这不起作用,您可以删除已安装的gem的所有跟踪 . 找到您的宝石安装位置:
您的gem安装前缀将是默认值,例如
~/.rbenv/versions/2.2.2/lib/ruby/gems/2.2.0
或您设置的内容,例如.vendor
清除gem目录:
清除已编译的gem缓存:
同时清除bundler的spec缓存:
然后你可以重新安装:
你可以随时使用:
gem pristine acts-as-taggable-on
pristine - 从位于gem缓存中的文件将已安装的gem恢复为pristine条件
如果您只想恢复当前项目的gem,您应该运行:
bundle exec gem pristine acts-as-taggable-on
首先,我做了一个
gem q --L
,gem query --local
的快捷方式 . 它输出我安装的所有本地宝石 .然后,根据DVG的建议,我使用正确的名称
gem uninstall acts-as-taggable-on
卸载了gem并运行了bundle install
. 之后我能够再次rails c
或rails s
没有任何问题 .从终端的项目目录
如果在
~/.rvm/
中使用带有宝石的RVM,如果bundle
未重新安装宝石,则此方法有效 .首先,删除gem源:
清除已编译的gem缓存:
同时清除bundler的spec缓存:
然后你可以重新安装:
如果您已经安装到
./bundle/vendor
或类似的,您需要先删除gem,但明确指定GEM_HOME,例如到目前为止,这是将使用bundler安装的gem卸载到供应商目录中的最简单方法 . 理想情况下,会有一个命令
bundle uninstall
或bundle reinstall
等 .如果您的目标是简单地重新安装,以下命令将有所帮助:
如果您像我一样并且在目录下有多个Web应用程序(例如
/srv/http
),则以下内容在所有目录中执行:如果您正在尝试重新安装rake,
gem pristine rake
将失败Skipped rake-10.X.X, it is a default gem
并且捆绑赢了't install it either, because it can' t卸载它 .如果你正在使用rvm,似乎最简单的就是做一个
rvm reinstall 2.x.x
. 至少对我来说,rvm repair all
也没有帮助 .所有其他默认宝石也是如此 . 我会在这里列出它们,以便绝望的googlers找到一些帮助:
bigdecimal
滴水
io-console
json
minitest
psych
耙
rbtree
rdoc
测试单位
bundle exec gem uninstall <gem_name>
- 从捆绑包中卸载gem(<app_root>/vendor/bundle/ruby/2.3.0/gems/
路径) . 这相当于@ioquatix给出的答案,但是他正在寻找的是更方便的解决方案 .gem uninstall <gem_name>
- 仅从系统中的全局gemset卸载gem