如何使用捆绑器重新安装宝石
我做了一个bundle show
并获得了一个gem目录的完整路径。
不幸的是,我使用rm -r gem_path
删除了该目录。 然后我的导轨应用程序不再工作了。 如果我尝试启动服务器或启动rails控制台,则会输出以下错误:
<class:Application>
:未初始化的常量MyAPP::Application::Gem
(NameError)
我应该怎么做才能恢复?
我尝试了bundle install
或bundle update
,希望强制捆绑包搜索并重新安装,但是没有起作用。
我也尝试删除Gemfile.lock
并运行bundle install
。 没有改变,同样的错误。
有问题的宝石是作为标签的行为 。
如果使用rbenv,这会让你完全卸载并重新安装一个像rmagick这样的gem:
第一:尝试一个简单的卸载/重新安装
gem uninstall rmagick
bundle install
如果这不起作用,您可以删除已安装宝石的所有踪迹。 找到你的宝石安装位置:
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 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
卸载了gem gem uninstall acts-as-taggable-on
并运行了bundle install
。 之后,我能够再次rails c
或rails s
,没有任何问题。
上一篇: How to reinstall a gem using bundler
下一篇: ruby on rails