2013-06-11 95 views
2

我目前有几个运行版本3.2.13的Rails应用程序使用Ruby 1.9.3。我计划最终将当前的应用程序升级到Rails 4.0,然后将Ruby升级到2.0。我需要仔细考虑转换到Ruby 2.0,因为从我的理解来看,Phusion Passenger只能处理一个版本的Ruby,而没有一些鼻子流血的解决方案,我现在不打算尝试实现。Ruby On Rails 3.2.13 - 为Rails应用程序使用不同的gemsets

我目前对我所有的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上使用gemset,但在同一台机器上为不同的应用程序使用不同版本的Rails或其他宝石组合。这可以做到吗?

任何帮助,将不胜感激。

+0

[RVM指导](https://rvm.io/gemsets/basics/)在第一个示例中解释了您正在讨论的内容。 –

+0

这解释了如何为不同版本的Rails创建不同的gemset,但并未解释如何识别每个应用程序使用哪个gemset。也许我错过了一些东西。 –

回答

0

您的Gemfile.lock会指出您使用的每个宝石版本 - 您无需担心宝石集。

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

+0

我更喜欢用自己的方式来使用bundler来管理我的宝石,但是它确实意味着如果你有多个版本的宝石,你就必须使用'bundle exec' - 值得一提。 –

+0

只是澄清:要更新我的应用程序之一来使用Rails 4.0,我所要做的就是更改我的Gemfile中的Rails版本以及添加Ruby版本号,然后执行bundle exec?我想确保这将允许我在不同的应用程序中运行Rails 3.2.13和Rails 4.0。 –

+0

'bundle install' /'bundle update'来更新你的包中的内容,否则是。 bundle exec用于当你想从gems运行可执行文件(例如bundle exec rails g migration Foo) –

2

仔细看看! ;)

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

然后创建项目目录/编辑.rvmrc文件:rvm use [email protected]_name

一个缺陷是,如果你执行下面的命令

cd some_project 
cd ../other_project 

和other_project没有指定gemset你会留在some_project ge MSET。为了避免这种情况,你可以在你的“项目”目录中创建默认宝石.rvmrc文件(如果有的话)

+0

我目前没有在我的项目中使用.rvmrc。这可能解释我刚发现的其他东西。我的尝试是为我所有的Rails应用程序使用一个gemset,但是在列出gemsets之后,我发现我无意中创建了其他的gemset。看起来我的宝石已经失控。我可以在这里尝试另一种选择。 –

+0

你也可以看看rbenv。就我个人而言,我有完全不同的方法,因为我所有的应用程序都是Ruby 1.9.3。 我告诉bundler在project_dir/.gems中安装gems,因此对于每个项目,我默认情况下都有gem分离。请参阅https://github.com/hajder/bootstrap-ruby-on-your-mac,但尚未完成 –

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 

,它会显示与样本宝石创建宝石一套,做

捆绑安装

这将安装所有特定的宝石下采样宝石这个项目, 同样可以用于其他项目做创建其他宝石,这样你可以使用rvm为不同的项目维护不同的rails/gem和ruby版本。