我是ruby和ruby on rails的新手,如果可能的话,我想得到一些澄清。
目前我的开发环境中安装了rails 4.2.6
,我已经在其中构建了一些项目,现在,对于我的新项目,我希望使用Rails 5,所以我假设如果我键入gem install rails
命令,将获得最新的Rails版本,并可能将其设置为默认版本。所以每次我想通过rails new my_new_project_name
创建一个新项目时,这个项目都会有最新的版本(目前是v5)。
我的问题是我的gem列表会包含两个rails版本吗,还是会给我的老项目带来冲突和问题?所以,如果我想回到我的任何一个有“老”版本的项目,不会影响任何更改,对吗?据我所知,是bundler
选择每个gem的版本,对吗?
如果是这样的话,我假设同样的事情也适用于我在每个项目中使用的每一个其他的宝石,对吗?
3条答案
按热度按时间ijxebb2r1#
您将有所有不同的版本。但您将需要添加版本号为所有宝石到您的宝石文件
例如
在
gemfile
中,您声明:von4xj4u2#
当使用同一个gem的不同版本时,最好的方法是使用rbenv或RVM为每个项目创建不同的gemset,这样可以确保您的项目不会错误地加载另一个版本。
我个人使用RVM,所以我会让你知道如何使用它。
1)从此处安装RVM https://rvm.io
2)确保您正在从您的主目录(/home/your_username)中加载. bashrc或. bash_profile文件中的RVM。
导出路径="$路径:$HOME/. rvm/bin"
-s "$主页/. rvm/脚本/rvm"&&源代码"$主页/. rvm/脚本/rvm"
3)看看这个页面https://rvm.io/workflow/projects并选择如何为你的项目设置RVM。我个人使用. rvmrc,因为我是老学校...但那些不再推荐,因为他们需要信任和较慢。作为替代,你可以使用. ruby-version和. ruby-gemset文件。但你也可以使用. versions. conf如果你想。让我们说现在我们选择使用. ruby-版本和. ruby-gemset文件。
4)cd到你的项目并运行这个命令'rvm--ruby-version use 2.3.3@project1--create'.这将在你的项目中生成这两个文件.每次你cd到这个项目时,RVM将自动拾取gemset.
5)对第二个项目也执行步骤4),但将"project1"替换为"project2"。
6)现在您可以编辑这两个项目的Gemfiles并放置您想要的Rails版本。
7)要安装每个项目,您需要cd到该目录并运行命令'gem install bundler'(仅第一次),然后您可以安全地执行'bundle install'
8)对第二个项目重复7)。
9)你都完成了。现在你有不同版本的同一宝石在两个不同的宝石。
要同时回答其他问题:
1)在同一gemset中使用同一gem的多个版本可能会导致冲突,尤其是在终端执行'rails new project'时,因为这不需要特定的版本。我建议在您的机器上安装现有gem的新版本之前创建不同的gemset。例如,对于这种特殊情况,我们可以这样做
rvm使用2.3.3@rails5--创建
gem安装程序捆绑程序
gem安装导轨-v 5.O.0.1
现在我们可以安全地执行"rails新项目"了。这样,新版本的rails就在一个新的gemset中。
希望这对你有帮助:)
kr98yfug3#
我通过将我所有的开发转移到Docker来解决这种依赖性问题。所以现在我通过使用Dockerfile为每个项目都拥有了一个独特的环境。
我也使用Makefile和compose.yml来自动化ci。希望能有所帮助。