2

我目前有几个运行版本 3.2.13 的 Rails 应用程序使用 Ruby 1.9.3。我计划最终将我当前的应用程序升级到 Rails 4.0,然后将 Ruby 升级到 2.0。我需要仔细安排转换到 Ruby 2.0 的时间,因为据我了解,Phusion Passenger 只会处理一个版本的 Ruby,而不会出现一些我目前不打算尝试实施的流鼻血解决方案。

我目前为我的所有 Rails 应用程序使用一个 gemset。我想在某个时候将我的 Rails 应用程序从 3.2.13 一个一个转换为当前版本的 Rails 4.0。当我尝试将我的一个应用程序更新到较新版本的 Rails 时,我被告知我必须执行更新 rails 命令。

我想要做的是能够运行我的一些应用程序使用 Rails 3.2.13 和其他使用 Rails 4.0,直到我确定它们都将在 Rails 4.0 下正常运行。完成此操作后,我将查看 Ruby 1.9.3(如果有的话)之间的差异,并将它们全部升级为使用 Rails 2.0。在这一点上,我知道我只会为 2.0.0 或任何 Ruby 2 的最新稳定版本创建 gemset。

我已经完成了网络搜索并检查了 RVM 网站。我了解如何将 gemset 分配给您要运行的 Ruby 版本。但是,我没有看到任何关于在相同版本的 Ruby 上使用 gemset,而是在同一台机器上为不同的应用程序使用不同版本的 Rails 或其他 gem 组合。这可以做到吗?

任何帮助,将不胜感激。

4

3 回答 3

2

细看!;)

首先,创建一个新的 gemset,其名称对应于您的项目 https://rvm.io/gemsets/creating/ 例如:rvm gemset create project_name

然后在项目目录中创建/编辑 .rvmrc 文件:rvm use 1.9.3@project_name

一个陷阱是,如果您执行以下命令

cd some_project
cd ../other_project

并且 other_project 没有指定 gemset,您将留在 some_project gemset 中。为避免这种情况,您可以在“项目”目录中使用默认 gemset 创建 .rvmrc 文件(如果有的话)

于 2013-06-11T18:10:21.533 回答
1
Project Folder
|___Gemfile
|__.ruby-gemset
|__.ruby-version

 Gemfile with all the required gems mention in your project folder
.ruby-gemset should have gem set name like sample-gemset
.ruby-version file should have specific ruby version (e.g 2.0)

 rvm gemset list

它将显示使用sample-gemset创建的 gem 集并执行

捆绑安装

这将在 sample-gemset 下安装该项目的所有特定 gem,同样您可以为其他项目创建其他 gem 集,这样您可以使用 rvm 为不同的项目维护不同的 rails/gems 和 ruby​​ 版本。

于 2014-09-05T18:37:55.473 回答
0

您的 Gemfile.lock 确定了您使用的每个 gem 的版本 - 您无需担心 gemset。

bundle install将始终安装正确的版本,并且您的应用程序将始终使用 Gemfile.lock 中的版本,即使有其他版本浮动

于 2013-06-11T18:04:14.587 回答