0

我最近遇到了 Bundler 1.1.3 然后使用 RVM 使用 Ruby 1.9.2 和 Rails 3.0.0 的问题,因为有一个使用 1.9.2@rails300 的旧项目——它一直说 bundler 是错误的版本或一些东西,似乎没有一个简单的解决方案。

实际上有没有办法将 Rails、Bundler 和几乎所有东西冻结成一个独立的项目?我认为 sqlite 或 mysql 服务器或可执行文件不需要被冻结,因为它们符合相同的命令......但可能最好也冻结作为与 DB 对话的层的 gem。

4

2 回答 2

0

由于您没有指定使用 bundler 的错误是什么,因此很难提供太多帮助,但您可以使用 Gemfile 完成大部分操作,其余部分使用 RVM 完成。您可以像这样指定所需的 gem 版本:

gem "rails", "3.2.3"

顺便说一下,这些都在bundler 的文档中。这实际上是 bundler 的重点——确保以一致的方式处理应用程序的依赖项。

然后,如果您出于某种原因需要特定版本的 ruby​​,只需将其转储到您的 rvmrc 中,您就应该进行设置。

于 2012-05-08T16:37:43.330 回答
0

由于使用了 bundler,现在可以冻结除 ruby​​、bundler 和 gem 版本之外的所有内容。这些必须具有自洽的版本。

如果您的 gem 集中有多个版本的 bunder,您可以指定要用作第一个参数的 bundler 版本。

bundle _1.1.3_ ...

如果问题是有一个使用 rails300 gem set 的旧项目,因此您无法更改该 gem set 中的版本,那么使用 rvm 为 ruby​​ 1.9 创建一个新的 gem set。但是,如果 ruby​​、gem 和 bundler 的版本不适合您,它们也不适用于旧项目,因此您可能需要修复此问题。

您可以通过以下方式冻结您的宝石(Rails 只是宝石或宝石的集合)

bundle package

有关更多信息,请参阅bundler 的文档。即使您在 rvm 中使用 gemset,您仍然需要打包您的包,因为即使在 rvm 中,gem 版本也是在启动时动态确定的。

于 2012-05-08T16:53:18.517 回答