我目前有几个运行版本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的gemset或任何最新的稳定版本的Ruby 2。
我已完成网络搜索并检查了RVM网站。我理解如何将gemset分配给您想要运行的Ruby版本。但是,我没有看到任何关于使用相同版本的Ruby使用gemsets但在同一台机器上使用不同版本的Rails或其他宝石组合以用于不同应用程序的任何内容。可以这样做吗?
任何帮助都将不胜感激。
答案 0 :(得分: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中。为了避免这种情况,您可以在“projects”目录中创建带有默认gemset的.rvmrc文件(如果有的话)
答案 1 :(得分: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版本。
答案 2 :(得分:0)
你的Gemfile.lock指出了你使用的每个宝石的哪个版本 - 你不必担心宝石集。
bundle install
将始终安装正确的版本,您的应用将始终使用Gemfile.lock中的版本,即使有其他版本浮动