【问题标题】:Get confused of some rails concepts, needs some explanations对一些 Rails 概念感到困惑,需要一些解释
【发布时间】:2011-09-23 10:44:16
【问题描述】:

我对 Rails 的一些概念感到困惑,例如:gemset、rubygems、bundler。我有以下三个问题:

1. 安装 RVM 工具后,设置开发环境以创建 rails 项目(比如 rails v2.3 项目)的正确步骤是什么

2.gem install XXX”和“bundle install”有什么区别?我是否可以理解为“bundle install”一次安装应用程序所需的所有 gem 而“gem install XXX”只安装指定的“XXX”gem?还有其他区别吗?那么为什么不使用捆绑器来安装特定的导轨呢?

3. 如果我想对 project_one 使用 rails v3.0,对 project_two 使用 rails v2.3。如何使用特定的 rails 版本创建两个项目?不同项目的不同 ruby​​ 版本怎么样?我只需要在Gemfile中指定需要的版本还是在项目路径下安装需要的版本?

【问题讨论】:

  • 我希望有三个不同的问题。
  • @Leem 这些是 rvm 概念,而不是 Rails。

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


【解决方案1】:

RVM 允许您在不同的 ruby​​ 版本旁边创建不同的 gemset。

您可以使用rvm install 安装不同版本的ruby。

rvm install 1.8.7

rvm install 1.9.2

rvm list known 会告诉你可以安装的可用 ruby​​ 实现。

假设您有两个项目:project_one 和 project_two,它们都有不同的 gem 依赖项。因此,您需要使用 Ruby 1.9.2 创建两个空 gemset。

rvm gemset create 1.9.2@project_one
rvm gemset create 1.9.2@project_two

要使用project_two的gemset,可以使用rvm use来选择gemset。

rvm use 1.9.2@project_two

您还可以将上述命令添加到 Rails 应用程序根路径下名为 .rvmrc 的文件中,当您 cd 进入应用程序的根目录时,rvm 将自动加载。

如果你想为 project_one 使用 Rails 2.3.8,

rvm use 1.9.2@project_one
gem install rails -v 2.3.8

和用于 project_two 的 Rails 3.1.0,

rvm use 1.9.2@project_two
gem install rails -v 3.1.0

gem installbundle install 之间的区别在于gem install 仅将指定的gem 安装到您的gemset 中,而bundle install 安装位于应用程序Gemfile 中的所有gem。

【讨论】:

  • 你好,命令“rvm gemset create 1.9.2@project_one”中的“1.9.2”是什么意思
  • @Leem 指的是ruby版本。
  • 是否应该在project_two路径下执行命令“rvm use 1.9.2@project_two”?还是外面?
  • 我可以通过更改“rvm gemset create RUBY-VERSION@project_name”中的版本号为不同的项目指定不同的ruby版本吗?
  • @Leem 它可以在任何地方执行,并且在您切换它或加载 .rvmrc 之前将保持不变。
【解决方案2】:

1) 如果您有 rvm 设置,我建议在您的应用文件中添加 .rvmrc 并在该文件中:

rvm --create ree-1.8.7-2011.03@myappname

这将始终使用指定版本的 ruby​​(在这种情况下为“ree-1.8.7-2011.03”),并且所有 gem 将安装在名为:myappname 的 rvm gemset 中。该文件将始终确保每次您从 bash_console 转到该文件夹​​时,它都会将 rvm 指向正确的环境。

2) 如果你有 rvm 设置,那么:

gem install XXX 在指定 rvm gemset 或如果不是全局 rvm gemset 中创建 gem

sudo gem install XXX 会为你添加 gems 全局 gems

就像您说的,您应该始终使用 Bundle install 和 group gems 进行开发、测试和生产。

3)这可以像我在第 1 点中所说的那样实现)只需在您的应用程序中创建此文件

【讨论】:

    猜你喜欢
    • 2014-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-29
    • 2015-07-12
    • 2021-08-28
    • 1970-01-01
    • 2020-08-29
    相关资源
    最近更新 更多