【问题标题】:bundle install and RVM捆绑安装和 RVM
【发布时间】:2011-04-25 00:47:15
【问题描述】:

我已经在现有的 Rails 3 应用程序上运行了“捆绑安装”,该应用程序在供应商/缓存中有 gem(我猜它们之前是通过“捆绑包”打包的)和有效的 Gemfile 和 Gemfile.lock 文件。

我看到的是,它在我的主目录中创建了一个文件夹 .bundle。

我也在使用 RVM。当我尝试“宝石列表”时,我没有看到供应商/缓存中安装了任何宝石。

我做错了吗?捆绑器文章说的所有地方,执行“捆绑”或“捆绑安装”以安装 Gemfile 和 Gemfile.lock 文件中的 gem。问题是否与 RVM 使用有关?

感谢您的建议。

【问题讨论】:

  • 查看rvm gemdir返回的文件夹。这就是它们的安装位置。
  • 但是他们不在那里?我应该执行以下操作: bundle install rvm gemdir?
  • 基本上,bundler 创建一个目录结构如下:ruby/1.8/{bin, cache, doc, gems, specification}。那么我的问题是,如何让 bundle install 在适当的 rvm ruby​​ 中创建这个 dir 结构,即放置 bundle 缓存。 gems, and specification 放入 rvm ruby​​ 缓存,gems 和规范?有办法吗?
  • Bundler 将使用 Gemfile 安装到当前 gemdir。出售宝石时,我认为您必须单独进行。此外,我认为 gem list 不会显示出售的 gem(我可能是错的)。查看文档。另外,这个Railscast 可能会有所帮助。

标签: ruby-on-rails rvm bundler


【解决方案1】:

如果您向bundle install 提供参数,它会继续在此目录中安装gems,即使您rm -rf 该目录并使用纯bundle install 从头开始​​,如Emil 的评论中所述。这个新目录默认由 bundler 使用,它甚至取代了您在 .rvmrc 文件中声明的内容。

要删除此约束,只需编辑.bundle/config 文件并删除声明BUNDLE_PATH 的文件,例如,

BUNDLE_PATH: /usr/local/lib/

【讨论】:

  • 这就是最终为我所做的。在删除.bundle/config 中的那一行后,它会将所有内容都转储到适当的rvm 位置,就像我需要的那样。
【解决方案2】:

查看rvm env gemdir,同时检查您在.rvmrc 中设置的宝石组。做bundle install,它应该得到所有的宝石。

通过执行$ cat .bundle 来检查.bundle 以查看其内容,并检查它是否正在将宝石复制到vendor/ruby。仅当提供了bundle install --path vendor/ruby (Ref) 时才会出现这种情况。

【讨论】:

  • 我发现了问题。当您为捆绑安装提供 arg 时,它会继续在此目录中安装 gem,即使您 rm -rf 此目​​录并从头开始使用纯“捆绑安装”。
  • 确实如此。 .bundle 需要进行编辑,以防止它对 bundle install 的未来运行生效。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多