【问题标题】:Gems not in Local Gems after bundle install捆绑安装后宝石不在本地宝石中
【发布时间】:2013-07-06 11:12:14
【问题描述】:

新机器。新的 rbenv 安装。新的 rbenv-gemset 安装。新的 ruby​​-2.0.0 安装。新的 rails 4.0.0 应用程序。

当我

$ bundle install

从 rails app 目录,我得到

Your bundle is complete!
It was installed into ./vendor/bundle

但是,如果我那么

$ gem list

任何应该安装的 gem 都没有显示出来。

我跑了

$ rbenv rehash

为什么会这样?

附加信息:

$ which bundle
/usr/local/var/rbenv/shims/bundle
$ rbenv which bundle
/usr/local/var/rbenv/versions/2.0.0-p247/bin/bundle
$ rbenv which ruby
/usr/local/var/rbenv/versions/2.0.0-p247/bin/ruby
$ ruby --version
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-darwin12.4.0]
$ rbenv gemset active
blog
$ which rails
/usr/local/var/rbenv/shims/rails

【问题讨论】:

  • gem list 不显示供应商中安装的捆绑 gem。请改用bundle listgem != bundle.

标签: ruby-on-rails ruby bundler rbenv rbenv-gemset


【解决方案1】:

您在此应用中的默认设置是安装到 vendor/bundle。您可以通过 gems 安装后出现的 It was installed into ./vendor/bundle 文本来判断这一点。

Bundler documentation 指定您必须通过--system 才能安装在系统位置:

--system: Install to the system location ($BUNDLE_PATH or $GEM_HOME) even
          if the bundle was previously installed somewhere else for this
          application

编辑:更多解释是,当不使用bundle exec 时,您的 ruby​​ 只知道使用 --system 选项安装的 gem。您可以从vendor/bundle 或通过运行bundle exec gem list 或(如Casper 注意到的)bundle list 选择的任何路径查看您的宝石。现在,您可以选择是否要将 gem 放在系统位置或应用程序目录中。

【讨论】:

  • 谢谢。好的,那么,假设我希望我的 gems 在应用程序目录中,我如何将它与应用程序的 rbenv gemset 连接起来?
  • 如果你的 gems 只在一个应用程序的范围内,你为什么需要 gemset?我猜你不能同时使用 gemset 和 --path 选项。试试bundle --system,然后你的宝石应该在 gemset 中。
  • bundle list 列出了所有已安装的 gem,例如对于 capistrano 部署的应用程序。默认情况下,对于 capistrano 部署的应用程序,gems 安装在文件夹 /<rails_app_name>/shared/bundle/ruby 下。从<rails_app_name>/current 文件夹(如<rails_app_name>/current$ gem list)运行gem list 仅列出全局安装的gem。要查看为应用程序安装的 gem 列表,我们应该运行 <rails_app_name>/current$ bundle list
猜你喜欢
  • 1970-01-01
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多