【问题标题】:Is there a way to freeze Rails, Bundler, and everything into a self contained project?有没有办法将 Rails、Bundler 和所有东西冻结成一个独立的项目?
【发布时间】:2012-05-08 16:24:43
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 bundler bundle


    【解决方案1】:

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

    gem "rails", "3.2.3"
    

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

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

    【讨论】:

      【解决方案2】:

      由于使用了 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
      

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

      【讨论】:

        猜你喜欢
        • 2019-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-23
        • 2019-10-10
        • 2021-11-13
        • 2011-11-15
        • 1970-01-01
        相关资源
        最近更新 更多