ruby-on-rails - RVM 切换 Rails 版本

标签 ruby-on-rails ruby rvm bundler

情况是我计算机上的默认 gemset 指向 rails 5.0.0。但是:我有一个使用非常旧的 Rails 版本的应用程序。假设此示例应用程序使用:rails 2.1.1

cd 进入此应用程序时,我的机器是否会自动切换到 rails 2.1.1,因为 rails 2.1.1 gem 文件?或者:我是否需要显式创建 gemset 以便我的应用程序和我的机器以“rails 2.1.1 方式”做事(而不是做事“rails 5.0.0 方式,这是我默认 gemset 中的 rails 版本)?

我担心的是,如果我的机器认为我在应用程序内部开发时使用的是 rails 5.0.0 而不是 rails 2.1.1:那么 rails 命令如生成器可能会创建文件并执行“rails 5.0.0 方式”而不是“rails 2.1.1”方式。

希望这是有道理的。为了通过 Gemset“明确地”声明此应用使用 rails 2.1.1

,我将执行以下操作

示例:

我创建了一个 gemset,为任何使用 rails 2.1.1

的应用指定
rvm gemset create rails_2_1_1

我指定要在此 gemset 上使用的 ruby​​ 版本

rvm use 2.2.1@rails_2_1_1

然后我将那个旧版本的 rails 安装到这个 gemset 上:

gem install rails --version=2.1.1

现在这个 gemset 使用 rails 2.1.1

现在,在我的应用程序的根目录中,我指定了一个 .ruby-gemset 文件,该文件告诉 rails:“确保您正在按照 rails 2.1.1 方式进行操作,并且不是 rails 5.0.0 方式:

#.ruby-gemset
rails_2_1_1

我想确保如果在应用程序的 Gemfile 中指定了另一个 rails 版本而不是在我的默认 gemset 中:那么在该应用程序中进行开发将在 Gemfile 中指定的 rails 版本的上下文中执行所有操作,而不是在 rails默认 gemset 中的版本。

最佳答案

这不是 RVM 和 Rails 的问题。使用 Gemfile 是最好的方法,恕我直言!在您的 Gemfile 中,您可以指定要使用哪个 ruby​​ 以及该 ruby​​ 中的哪个 gemset。

为系统设置默认的 Ruby/Gemset

首先,让我们为5.0.0 上的系统建立默认 ruby​​。这将允许任何新的/现有的 Rails 项目默认为此 ruby​​ 版本(除了那些用 Gemfile 覆盖的项目):

rvm use --default 5.0.0

..当然,如果您希望它固定到指定的 gemset:

rvm use --default 5.0.0@my_default_gemset

在 Gemfile 上设置默认的 Ruby/Gemset -- 用于特定于 Rails 的应用程序

示例 1

如果您想设置 Rails 应用程序以利用 RVM gemset 2.2.1@rails_2_1_1,类似于下面的 RVM 命令...

rvm use 2.2.1@rails_2_1_1

在您的 Gemfile 中,在 source 行的正下方指定以下两个注释行:

source 'https://rubygems.org'
#ruby=2.2.1
#ruby-gemset=rails_2_1_1

现在,当您cd 进入您的 rails 应用程序目录时,您应该会收到以下消息或类似消息:

RVM used your Gemfile for selecting Ruby, it is all fine - Heroku does 
that too, you can ignore these warnings with 'rvm rvmrc warning ignore 
/my/rails/app/path/Gemfile'.

To ignore the warning for all files run 'rvm rvmrc warning ignore
allGemfiles'.

您可以仔细检查您的结果:

rvm list gemsets

   ruby-2.2.1 [ x86_64 ]
   ruby-2.2.1@global [ x86_64 ]
=> ruby-2.2.1@rails_2_1_1 [ x86_64 ]
   ruby-5.0.0 [ x86_64 ]
   ruby-5.0.0@global [ x86_64 ]

例子2

另一个使用 ruby-2.0.0-p247@rails-4.0.0 的示例,示例 RVM 命令...

rvm use ruby-2.0.0-p247@rails-4.0.0

在您的 Gemfile 中,指定:

#ruby=2.0.0-p247
#ruby-gemset=rails-4.0.0

关于ruby-on-rails - RVM 切换 Rails 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38354544/

相关文章:

ruby-on-rails - 将 "rails runner"用于 cron 作业是非常占用 CPU 的 - 替代方案?

html - 如何使用 link_to 在 Rails 3 上创建没有 href 属性的链接?

ruby-on-rails - 由于 Bundler::GemspecError: 无法读取 gem 导致 bundle 安装失败

rvm - Docker : RVM command not found

ruby-on-rails - 我如何序列化 - 反序列化哈希以将其保存在数据库中?

mysql - 根据开始日期对事件进行排序

arrays - 从每个数组中删除是否安全?

Ruby:从 block 中产生 block ?

ruby - 使用 RVM 的 Mac OS X Lion Xcode 问题

ruby-on-rails - Rails ActionMailer 附件显示为乱码