2013-07-22 37 views
14

我从Gemfile中删除了一个gem'mygem',但刚才我意识到它仍然安装。从Gemfile中删除宝石后该怎么办?

那么如何让bundler重新扫描Gemfile并更新Gemfile.lock,而不是更新每一个gem?

来自php,这是我习惯于这样做的:composer update nothing。捆绑器是否有相同的功能?

回答

25

您只能运行bundlebundle install根据您的Gemfile安装宝石。这会从你的Gemfile.lock文件中删除mygem的实例。但是,它不会从系统中删除宝石。为此,请运行gem uninstall mygem

不完全相关,但还是有帮助的:

  • bundle outdated会告诉你,是不是最新版本的宝石。不要拿与这个列表绑定在一起 - 宝石不在最新版本上是相当常见的,因为有些宝石是作为依赖安装的&一个宝石可能需要另一个宝石的旧版本。
  • bundle upgrade mygem会升级只是那宝石,并且会带来它的依赖关系的更新。这意味着其他宝石可能会升级或安装。
  • 您可以搜索RubyGems查看每个版本的gem依赖关系。作为宝石用户,您只需要关注宝石页面底部的“运行时依赖”列表。
+6

还有非常方便的'捆绑clean'命令自动删除旧的和未使用的宝石。可以使用Bundler> = 1.1,并且如果使用'--path'选项安装了gem。 – Torimus

+0

哦,很酷!我一直在使用'gem cleanup' ...任何想法这两者如何不同? –

+0

我喜欢这些综合性答案 – Donato

1

清理未使用的宝石在你的捆绑目录: 束干净--force