在开发环境中安装了不同的rails和gems版本

时间:2016-11-30 15:02:44

标签: ruby-on-rails ruby rubygems

我是铁杆上的红宝石和红宝石的新手,如果可能的话,我想要一些澄清。

我目前在我的开发环境中安装了rails 4.2.6,我在其中构建了一些项目。现在,对于我的新项目,我想使用Rails 5,所以我假设如果我键入gem install rails命令将获取最新的rails版本并可能将其设置为默认值,因此每次我想创建rails new my_new_project_name这个项目的新项目将拥有最新版本(目前为v5)。

我的问题是,我的宝石列表是否包含两个rails版本,或者它是否会导致我的旧项目出现任何冲突和问题?所以,如果我想在我的任何具有“旧”版本的项目上工作,不会影响任何更改,对吧?据我所知,bundler选择每个宝石的版本,对吗?

如果是这样的话,我认为同样的事情适用于我为每个项目使用的每一个宝石,对吗?

2 个答案:

答案 0 :(得分:2)

使用同一gem的不同版本时,最好的办法是使用rbenv或RVM为每个项目创建不同的gemsets。这样您可以确保您的项目不会错误地加载另一个版本。

我个人使用RVM,所以我会告诉你如何使用它。

1)从这里安装RVM https://rvm.io

2)确保从主目录(/ home / your_username)加载.bashrc或.bash_profile文件中的RVM。您可以使用以下代码:

export PATH =“$ PATH:$ HOME / .rvm / bin”

[[-s“$ HOME / .rvm / scripts / rvm”]]&&来源“$ HOME / .rvm / scripts / rvm”

3)查看此页面https://rvm.io/workflow/projects并选择您希望如何为项目设置RVM。我个人使用.rvmrc,因为我老了...但不推荐那些因为他们需要信任而且速度较慢。作为替代方案,您可以使用.ruby-version和.ruby-gemset文件。但是你也可以使用.versions.conf。让我们说现在我们选择使用.ruby-version和.ruby-gemset文件。

4)cd进入你的项目并运行这个命令`rvm --ruby-version use 2.3.3@project1 --create'。这将在您的项目中生成这两个文件。每次你进入这个项目时,RVM会自动获取gemset。

5)对第二个项目执行步骤4),但将'project1'替换为'project2'。

6)现在您可以编辑这两个项目的Gemfiles并放置您想要的rails版本。

7)安装每个项目你需要进入该目录并运行命令'gem install bundler'(仅限第一次)然后你可以安全地进行'bundle install'

8)重复7)进行第二个项目。

9)你们都完成了。现在,您在两个不同的宝石集中拥有不同版本的相同宝石。

还要回答其他问题:

1)具有相同gemset的多个版本的同一gem的多个版本可能会导致冲突,尤其是当从终端执行'rails new project'时,因为这不需要特定版本。我建议在您的机器上安装新版本的现有gem之前创建不同的gemset。例如,对于这种特殊情况,我们可以这样做

rvm使用2.3.3@rails5 --create

gem install bundler

gem install rails -v 5.O.0.1

现在我们可以安全地做'铁路新项目'了。这样新版本的rails就在新的gemset中。

我希望这会对你有所帮助:)。

答案 1 :(得分:1)

您将拥有所有不同的版本。但是您需要将所有gem的版本号添加到gemfile

例如 enter image description here

并在gemfile中说明:

gem 'remotipart', '1.2.1'