RVM,RubyGems和Bundler的日常使用
许多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的日常使用相关推荐
- Ubuntu上通过 RVM 安装 多版本 Ruby/Rails
2019独角兽企业重金招聘Python工程师标准>>> Rails 3 RC 版半个月前就已经发布,而正式版据说会在未来几周内面世.相对于 2.3 版,Rails 3 差不多在各个方 ...
- 在sinatra中使用bundler加载gemfile
一.创建一个Gemfile # Gemfile # Gemfile.lock是bundle install后自动生成的gem 'sinatra' 二.配置config.ru require 'ruby ...
- Mac下RVM+RubyMine 环境搭建
安装Homebrew(如有请跳过) /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install ...
- 利用Octopress搭建一个Github博客
小引 Octopress是利用Jekyll博客引擎开发的一个博客系统,生成的静态页面能够很好的在github page上展现.号称是hacker专属的一个博客系统(A blogging framewo ...
- Ubuntu中octopress安装
为什么80%的码农都做不了架构师?>>> <div id="main"><article class="hentry" ...
- Linux(CentOS)搭建redmine项目管理系统
背景 由于项目需要,决定用开源而强大的redmine系统作为项目管理软件.由于服务器(CentOS6.8)没有预装ruby.ROR(Ruby on rails)环境,本文内容是从0开始搭建的,中间也吃 ...
- Ghost Blog
2019独角兽企业重金招聘Python工程师标准>>> ##安装nodejs sudo apt-get update sudo apt-get install -y python-s ...
- fly.io ruby on rails
Build, Deploy and Run a Ruby Application · Fly Docshttps://fly.io/docs/getting-started/ruby/首先使用命令在项 ...
- 使用微博自动记录俯卧撑个数
根据SMART原则我制定了2016年的目标.每个月都有一个小目标,每个目标都是specific(具体).Measurable(可度量).Attainable(可实现).Relevant(相关性).Ti ...
最新文章
- php上传文件 不移动,move_uploaded_file()为什么无法移动上传的文件?
- 近五年计算机网络技术的发展,计算机网络技术的近期发展
- Tensorflow get_variable和Varialbe的区别
- uni-app 实现小程序rsa加密(非对称加密原理)
- 【AT987】高橋君【组合数】【莫队】
- css ——行级元素与块级元素解析
- python根须系统斜杠_深入浅出Python中的os模块
- 数学不好,能学好机器学习吗?
- 芯片优缺点_电子工程师的未来在哪里?芯片领域的人该反问一下自己了
- CSS基础之清除浮动
- 威斯康星大学乳腺癌肿瘤数据预测分类代码讲解
- ios开发学习--选项卡(Tab Bar) 效果源码分享--系列教程
- 用GParted工具修改Ubuntu系统中/home分区大小
- paip.提升用户体验---网站程序HTML,JS需要注意的地方
- 杀毒软件可以查杀已知的计算机病毒,杀毒软件可以查杀( )。
- matlab 切点投资组合 程序,基于MATLAB的证券投资组合分析
- 粗糙集理论(Rough Set Theory)
- IBM制造业专家赵亮:汽车及制造业质量体系管理
- webSocket实现聊天室功能
- CANoe软件使用(一)——软件界面介绍