许多Ruby应用都使用RVM+RubyGems+Bundler来管理自身的执行环境,其中包括Ruby的版本管理和软件包(gems)管理,本文使用ruby-1.9.2-p290, Rubygems-1.8.10和bundler-1.0.21简单介绍此三者的简单使用。

(1)使用RubyGems

  RubyGems是随着Ruby一起安装的,当安装好Ruby之后,RubyGems对应的命令gem便可以使用,gem命令用来安装Ruby世界的第三方软件包,这些软件包被称作gems,类似于Wndows下dll文件或Linux下的so文件,但是一个Gem并不是单个文件,而是具有一定目录结构的文件夹。请注意,“gem”既表示RubyGems的命令,又可表示某个Ruby软件包,为了不至混淆,本文采用"gem"表示RubyGems的命令,而用"Gem"表示一个Ruby软件包。

  例如,安装名为“rake”的软件包:

gem install rake

  gem命令将自动从网上下载该软件包,然后进行安装。

  列出已经安装的软件包:

gem list

  此外,gem命令还可以用来构建你自己的Gem。

(2)使用RVM

  在终端下执行以下命令便可安装rvm:

bash < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer )

  安装完毕后rvm还不能立即使用,须要将以下脚本追加到当前用户主目录下的.bashrc文件。

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

  在Linux下建议使用非root用户安装rvm,这样rvm将被安装在当前用户的主目录下的.rvm 文件夹(隐藏文件夹), 如果需要删除rvm,直接删除该.rvm文件夹即可。

  使用rvm命令列出当前可以安装的ruby版本:

rvm list known

  安装某ruby版本(例如ruby-1.9.2-p290):

rvm install ruby-1.9.2-p290

  使用某ruby版本:

rvm use ruby-1.8.7-head

  如果在该命令之后加上--default选项,将在每次启动终端时默认使用该ruby版本。

  rvm除了可以管理不同的ruby版本外,还可以为每个ruby版本创建不同的Gem集合(gemsets),从而使不同的Ruby应用可以独立使用自己的Gem集合。比如在使用ruby-1.9.2-p290的情况下,我需要建立两个rails工程,一个使用rails-3.0,一个使用rails-3.1.0,我们便可创建两个gemset,并在各个gemset下分别安装对应的rails版本和所需其他Gem:

rvm gemset create rails-3.0            #创建名为rails-3.0的gemset
rvm 1.9.2-p290@rails-3.0               #使用ruby-1.9.2-p290并使用rails-3.0 gemset
gem install rails -v 3.0                    #在rails-3.0 gemset下安装rails的3.0版本
rvm gemset create rails-3.1.0         #创建名为rails-3.1.0的gemset
rvm 1.9.2-p290@rails-3.1.0            #使用ruby-1.9.2-p290并使用rails-3.1.0 gemset
gem install rails -v 3.1.0                 #在rails-3.0 gemset下安装rails的3.1.0版本

  使用以下命令可以列出当前Ruby版本下的所有gemset:

rvm gemset list

  在笔者的ubuntu机器下输出如下:

    gemsets for ruby-1.9.2-p290 (found in /home/eudy/.rvm/gems/ruby-1.9.2-p290)defaultglobalmass-opinion-rails3.1.0
=> Miss_India_in_Cucumber_Waywatirmelon-cucumber

  第1行表明目前正使用ruby-1.9.2-p290,以下几行每行为一个gemset, “=> ”表明当前正使用的gemset。

(3)使用Bundler

  bundler主要用于管理Ruby应用程序的依赖关系,并按照此依赖关系安装所需的Gems。当运行bundle install命令来安装Gems时,bundler会使用当前目录下的名为Gemfile的文件来处理依赖关系。

  以下是一个简单的Gemfile内容:

source "http://rubygems.org"
gem "nokogiri"
gem "rack", "~>1.1"
gem "rspec", :require => "spec"

  文件第1行表明bundler会从http://rubygems.org下载Gems;第2行表明需要名为nokogiri的Gem;第3行表明需要名为rack的Gem,并且版本必须高于1.1;第4行表明rspec依赖于spec, 所以spec将先于rspec安装。

RVM,RubyGems和Bundler的日常使用相关推荐

  1. Ubuntu上通过 RVM 安装 多版本 Ruby/Rails

    2019独角兽企业重金招聘Python工程师标准>>> Rails 3 RC 版半个月前就已经发布,而正式版据说会在未来几周内面世.相对于 2.3 版,Rails 3 差不多在各个方 ...

  2. 在sinatra中使用bundler加载gemfile

    一.创建一个Gemfile # Gemfile # Gemfile.lock是bundle install后自动生成的gem 'sinatra' 二.配置config.ru require 'ruby ...

  3. Mac下RVM+RubyMine 环境搭建

    安装Homebrew(如有请跳过) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...

  4. 利用Octopress搭建一个Github博客

    小引 Octopress是利用Jekyll博客引擎开发的一个博客系统,生成的静态页面能够很好的在github page上展现.号称是hacker专属的一个博客系统(A blogging framewo ...

  5. Ubuntu中octopress安装

    为什么80%的码农都做不了架构师?>>>    <div id="main"><article class="hentry" ...

  6. Linux(CentOS)搭建redmine项目管理系统

    背景 由于项目需要,决定用开源而强大的redmine系统作为项目管理软件.由于服务器(CentOS6.8)没有预装ruby.ROR(Ruby on rails)环境,本文内容是从0开始搭建的,中间也吃 ...

  7. Ghost Blog

    2019独角兽企业重金招聘Python工程师标准>>> ##安装nodejs sudo apt-get update sudo apt-get install -y python-s ...

  8. fly.io ruby on rails

    Build, Deploy and Run a Ruby Application · Fly Docshttps://fly.io/docs/getting-started/ruby/首先使用命令在项 ...

  9. 使用微博自动记录俯卧撑个数

    根据SMART原则我制定了2016年的目标.每个月都有一个小目标,每个目标都是specific(具体).Measurable(可度量).Attainable(可实现).Relevant(相关性).Ti ...

最新文章

  1. php上传文件 不移动,move_uploaded_file()为什么无法移动上传的文件?
  2. 近五年计算机网络技术的发展,计算机网络技术的近期发展
  3. Tensorflow get_variable和Varialbe的区别
  4. uni-app 实现小程序rsa加密(非对称加密原理)
  5. 【AT987】高橋君【组合数】【莫队】
  6. css ——行级元素与块级元素解析
  7. python根须系统斜杠_深入浅出Python中的os模块
  8. 数学不好,能学好机器学习吗?
  9. 芯片优缺点_电子工程师的未来在哪里?芯片领域的人该反问一下自己了
  10. CSS基础之清除浮动
  11. 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解
  12. ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程
  13. 用GParted工具修改Ubuntu系统中/home分区大小
  14. paip.提升用户体验---网站程序HTML,JS需要注意的地方
  15. 杀毒软件可以查杀已知的计算机病毒,杀毒软件可以查杀( )。
  16. matlab 切点投资组合 程序,基于MATLAB的证券投资组合分析
  17. 粗糙集理论(Rough Set Theory)
  18. IBM制造业专家赵亮:汽车及制造业质量体系管理
  19. webSocket实现聊天室功能
  20. CANoe软件使用(一)——软件界面介绍

热门文章

  1. 我的技术心病(转贴)
  2. AngularJS入门心得1——directive和controller如何通信
  3. 查询SQL Server Index上次Rebuild时间
  4. cocos2d-x常用工具-沈大海cocos2d-x教程23
  5. GridView自带的分页功能的实现
  6. asp.net中, 如何在后台获取访问这个页面的用户的名字?
  7. 程序员过关斩将--你的业务是可变的吗
  8. vue学习(十五) 过滤器简单实用
  9. 全国主要城市不同日照标准的间距系数
  10. 2015.7.29 上学前在家的最后一晚