管理不同版本ruby和rails的利器——rvm

     近年来,ruby on rails逐渐火了起来,我想各位码农早就耳闻,特别是那些做B/S项目的童鞋,早就想跃跃一试了。

笔者也是初次接触ruby on rails ,我想,对于初学者来说,最好的学习方式就是,自己搭建一个环境,让程序飞起来先。

在ubuntu上搭建ruby on rails 环境的时候,多数人都只是安装好ruby之后,然后执行

$ gem install rails

这种在线安装,通常是安装官网最新的rais版本(目前发布的最新的版本:4.0.2)

值得注意的是,软件不断在更新,难保有一天我们会遇到更高版本的rails application,我们的调试将变得很麻烦.

庆幸的是,有一个ruby 版本管理器,常称为rvm[RubyVersion Manager].

官方(http://rvm.io/)解释如下:

RVM is a command-line tool which allows you to easily install, manage, and work with multiple ruby environments from interpreters to sets of gems.

 

RVM 允许ruby,gems和irb之间相互独立。

通过以下的场景可以阐明这一点.

比如,我们对ruby 1.9.2-head 测试两种版本的gem.

你可以为 ruby 1.9.2-head安装一个默认的gemset

然后再为之创建一个不同版本的gemset,便于两者之间的切换[ switch between them easily.]。

 

Example: testing gems

备注;带$的命令行在终端中执行

$ rvm 1.9.2-head@testing

will use a '1.9.2-head@testing' GEM_HOME (be sure to create it first), whereas:

$ rvm 1.9.2-head

will use the default 1.9.2-head GEM_HOME :)

Example: Rails versions & upgrading apps

To illustrate the point, let's talk about a common use case. Assume you are testing out a rails application against a new Rails release. RVM makes such testing very easy, by letting you quickly switch between multiple Rails versions. First, let's set up the environments:

复制代码
$ rvm 1.9.2-head
$ gem install rails -v 2.3.3

$ rvm gemset create rails222 rails126
Gemset 'rails222' created.
Gemset 'rails126' created.

$ rvm 1.9.2-head@rails222
$ gem install rails -v 2.2.2

$ rvm 1.9.2-head@rails126
$ gem install rails -v 1.2.6

$ rvm 1.8.7
$ gem install rails -v 1.2.3
复制代码

 

Note that, for each of the ruby installs above, you can have completely separate versions!

Now that your environments are set up, you can simply switch between Rails versions and Ruby versions as follows.

复制代码
$ rvm 1.9.2-head@rails126 ; rails --version

Rails 1.2.6

$ rvm 1.8.7 ; rails --version

Rails 1.2.3

$ rvm 1.9.2-head@rails220 ; rails --version

Rails 2.2.2

$ rvm 1.9.2-head ; rails --version

Rails 2.3.3
复制代码

 

时间仓促,先到这里.

 

 

posted @   楠木大叔  阅读(828)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示