我目前有几个使用Ruby 1.9.3运行3.2.13版本的Rails应用程序。我计划最终将我当前的应用程序升级到Rails 4.0,然后将Ruby升级到2.0。我需要仔细选择转换到Ruby 2.0的时间,因为根据我的理解,Phusion Passenger只会处理一个版本的Ruby,没有一些流血的解决方案,我不打算在这一点上尝试实现。
我目前使用一个gemset为我所有的Rails应用程序。我想在某个时候将我的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或其他gems组合。这能做到吗?
仔细看看!;)
首先,创建一个新的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中。为了避免这种情况,您可以在"projects"目录(如果有的话)中创建带有默认gemset的.rvmrc文件
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集,这样你就可以使用rvm为不同的项目维护不同的rails/gems和ruby版本。
您的Gemfile。锁定你使用的每个gem的版本-你不需要担心gemsets。
bundle install
将始终安装正确的版本,您的应用程序将始终使用Gemfile中的版本。锁定,即使周围有其他版本浮动