2019独角兽企业重金招聘Python工程师标准>>>

Rails 3 RC 版半个月前就已经发布,而正式版据说会在未来几周内面世。相对于 2.3 版,Rails 3 差不多在各个方面都作出了改进。如果你准备开发新项目,现在应该是时候体验 Rails 3 的新功能了。本文将带领你在 Ubuntu 上安装 Rails 3 开发环境,你会发现,这个过程和安装 Rails 2.3 并不相同。
Rails 和 Ruby 的发展在过去的几年内一直没有取得同步,尽管 Ruby 1.9 版已经出现相当长时间了,可是直到今天,Rails 网站上 仍然推荐大家使用 1.8.7 版的 Ruby。原因是 Rails 2 基于 Ruby 1.8 开发,而 Ruby 在升级到 1.9 版时引入了许多不兼容性,这也是为什么 Ubuntu 的官方源中会同时包含两个不同版本的 Ruby。
Rails 3 的出现改变了这个局面,最新版的 Rails 一律采用最新版的 Ruby 进行开发,这似乎也标志着 Rails 和 Ruby 已经进入相对平稳的发展阶段。(如果说 Rails 在国内没有发展成为主流技术是因为功能变化太快,那么 Rails 3 的发布说不定会带来新的转机。希望如此。)
由于 Ruby 1.8 和 1.9 并不兼容,尽管在 Ubuntu 上这两个版本都可以通过软件包管理器安装,但是我们无法同时使用基于 Ruby 1.8 的 Rails 2 和基于 Ruby 1.9 的 Rails 3(事实上,Rails 3 可以支持 Ruby 1.8.7,但为了跟上发展步伐,还是建议使用 1.9 版的 Ruby)。如果我们还有许多采用 Rails 2 编写的旧项目需要维护的话,问题将会变得非常复杂。
要解决这个问题,我们需要借助于一个聪明的 Shell 脚本程序——RVM(Ruby Version Manager),利用它,我们可以在自己的机器上同时安装多个版本的 Ruby,之后只需要一条命令即可随意切换。安装环境之前先安装一些可能的库 $sudo apt-get install curl bison build-essential git-core $sudo apt-get install zlib1g-dev libssl-dev libreadline5-dev libxml2-dev
安装 RVM
当前 RVM 还在进行密集型开发,其作者 Wayne Seguin 建议从 GitHub 上获取最新版代码来安装,作为 Shell 高手,他还为我们准备好了一段脚本,只要执行下面这行命令,工作将自动完成:$ bash < <( curl http://rvm.beginrescueend.com/releases/rvm-install-head )
(可能的替代方案:$ mkdir -p ~/.rvm/src/ && cd ~/.rvm/src && rm -rf ./rvm/ && git clone git://github.com/wayneeseguin/rvm.git && cd rvm && ./install
)
你会注意到,在输出信息中有一段警告,要求我们修改 .bashrc 文件。请用任意文本编辑器打开 ~/.bashrc 文件,找到包含有如下文字的一行:[ -z "$PS1" ] && return
删除这行文字(必须删除,注释无效),并改为:if [ -n "$PS1" ]; then
然后在文件的结尾添加下面的两行:fi[ -s "$HOME/.rvm/scripts/rvm" ] && source "$HOME/.rvm/scripts/rvm"
之所以要修改 .bashrc 文件,是因为 RVM 将作为 Shell 函数使用,我们需要在初始化 Shell 时(如打开终端窗口或执行某个命令)加载 RVM。你可以打开一个新的终端窗口,输入下面的命令来判断 RVM 是否安装成功:$ type rvm | head -n1
如果返回 “rvm is a function”/rvm是一个函数,则说明一切正常。更新rvm (如需要)$ rvmupdate--head&&rvmreload
同时安装多个版本的 Ruby
RVM 采用类似 BSD 的安装方式,当我们要求安装某个版本的 Ruby 时,它会当场下载源代码并在本机编译安装。作为准备工作,我们需要安装 C 语言编译器和一些开发函数库:$ sudo apt-get install build-essential bison openssl libreadline5 libreadline-dev curl git-core zlib1g zlib1g-dev libssl-dev vim libsqlite3-0 libsqlite3-dev sqlite3 libreadline5-dev libreadline6-dev libxml2-dev git-core subversion autoconf
现在可以安装 Ruby 了,我们打算安装 1.8.7 和 1.9.2 两个版本:$ rvm install 1.8.7$ rvm install 1.9.2
请注意,由于安装过程需要编译代码,时间可能会比较长(要看机器性能)。一旦完成,我们可以输入下面的命令查看系统中已经安装的 Ruby 版本:$ rvm listrvm rubiesruby-1.8.7-p299 [ i386 ]ruby-1.9.2-rc2 [ i386 ]
在不同版本的 Ruby 间进行切换
切换 Ruby 相当简单,假如我们希望使用最新开发版,只要执行:$ rvm 1.9.2
或者¥rvm 1.8.7
你可以查看 Ruby 的版本号以确认:$ ruby -vruby 1.9.2dev (2010-07-11 revision 28618) [i686-linux]
上面的切换方式是临时性的,如果关闭终端再重新打开,又会回到原先默认的 Ruby 版本。要设定某一版本为默认版本,可以执行:$ rvm 1.8.7 --default
这样的话任何时候打开新终端都会使用我们设定的默认版本。
如果在安装 RVM 之前我们已经在系统上安装了 Ruby,我们可以使用这个命令使用系统上原有的 Ruby 版本:$ rvm system
当然,也可以指定系统原有的 Ruby 为默认的版本:$ rvm system –default
Gemsets
RVM 可以根据某一类项目的需要,将 Ruby 和一组 Gems 看作一个整体,即 Gemsets。这个概念和 Bundler 很相似,只是 Bundler 并不包含 Ruby 的版本号,而 RVM 也不关心 Gems 之间的依赖关系。而事实上,在实际应用中,RVM 可以和 Bundler 完美地配合。
作为示例,我们先创建两个 Gemsets,分别用于 Rails 2.3 项目和 Rails 3 项目:$ rvm --create 1.8.7@rails2$ rvm --create use 1.9.2@rails3rc
在创建 Gemsets 时,我们为它们分别取了个名字。名字包括两个部分,中间由“@”隔开,之前是 Ruby 的版本,之后是项目或项目类别的名称。我们一般称这样的 Gemsets 为 Named Gem Sets, 以区别于在上一节中介绍的仅包括 Ruby 版本号的无名环境。第二个命令中的 “use” 表示创建之后,当场切换到该 Named Gem Set。当然,我们还可以将某个 Named Gem Set 设为默认值:$ rvm --default use 1.9.2@rails3rc
Named Gem Sets 为不同项目设置了一个相对隔离的环境。假设我们现在安装了一些 Gems(比如通过 Bundler),那么这些 Gems 仅在 1.9.2@rails3rc 环境下可见,与此同时,我们可以在 1.8.7@rails2 环境下安装另外一组 Gems,而这两组 Gems 之间绝对不会发生任何冲突。关于gems
每个ruby解释器默认有一个名字为global的gemset,可以创建自己的gemset,通过rvm 1.8.7@gemset的方法来切换不同的gemset
gems之间可以进行同步,支持export/import/copy等操作
安装 Rails 3 程序
请确定当前的 Named Gem Set 是 1.9.2@rails3rc:$ rvm use 1.9.2@rails3rc安装rails,不要加sudo
在该环境下安装最新版的 Rails:$ gem install rails –pre
(安装其他版本derails可以手动指定版本号eg:$gem install rails -v 2.3.8$gem install rails (默认最新版本))
上面命令中的“--pre”表示安装未正式发布的版本,目前的最新版是 Rails 3 RC。另外,值得注意的是,由于 RVM 会把安装的 Gems 保存在用户目录下(如 ~/.rvm/gems/ruby-1.9.2-rc2/gems/), 所以不必在命令之前加 “sudo”。编写第一个 Rails 3 程序
我们创建一个名为 blog 的新项目,
在 Rails 3 中,创建项目的命令发生了变化,如下所示:$ rails new blog$ cd blog
这时我们可以在项目根目录下的 Gemfile 文件中添加需要的 Gems,其中默认包括了 rails 和 sqlite3-ruby, 我们暂时保留默认设置,执行下面的命令安装:$ bundle install
(如果使用mysql数据库,创建项目的时候,需要进行指定eg:$rails blog -mysql
)
由于之前我们已经安装 rails,这条命令只会安装 sqlite3-ruby。
下面我们可以使用 scaffold 生成器生成一个简单的功能,注意和 Rails 2.3 版语法的差别:$ rails generate scaffold Post title:string content:text
和过去一样,生成数据表:$ rake db:migrate
最后开启服务器,请注意命令的变化:$ rails server
打开浏览器,访问网址 http://localhost:3000/posts,你将会看到熟悉的画面。补充说明
上面的步骤适用于 Ubuntu 10.04,不确定是否同样适用于 Mac,但概念上应该大同小异。另外 RVM 十分强大,功能远远不只是本文中介绍的这些,比如 Gemsets 的高级用法还有很多。详细情况请参考官方网站上的说明。

转载于:https://my.oschina.net/roockee/blog/38798

Ubuntu上通过 RVM 安装 多版本 Ruby/Rails相关推荐

  1. ubuntu安装高版本ruby

    ubuntu安装和卸载ruby 在ubuntu12.04版本下,运行下面指令默认安装ruby版本是1.8 1 $ sudoapt-get installruby 一 .下面介绍一下如何安装ruby1. ...

  2. Windows学习总结(23)——在 Windows 10 子系统 ubuntu 上利用 WSL2 安装 docker 的 2 种方式

    前言 windows10 目前推出了WSL2,相对于WSL采用API转换的方式, WSL2 则完全不同,win10 开始内置了一个轻量级虚拟机,经过不断的优化,这个虚拟机实现了与 windows 的高 ...

  3. PyTorch——Ubuntu上Pytorch的安装教程

    1 致谢 感谢网友夜幕下的光123提供的帮助, 原文链接如下: https://blog.csdn.net/songchunxiao1991/article/details/95192063 2 前言 ...

  4. Ubuntu上mysql的安装及使用【转】

    原创 Ubuntu上mysql的安装及使用 2019-02-10 13:54:24 baiduoWang 阅读数 196更多 分类专栏: Linux MySql 版权声明:本文为博主原创文章,遵循 C ...

  5. 在Ubuntu上用python3安装caffe(仅CPU)

    在Ubuntu上用python3安装caffe(仅CPU) 现在网上安装caffe的版本基本上都是基于python 2.7的,本教程旨在用anaconda 3安装caffe cpu,其过程非常艰辛,连 ...

  6. 在Ubuntu上源码安装MySQL+安装问题解决+安全优化

    当然,MySQL的安装方法多种多样,在Ubuntu上,你可以采用apt-get的方式安装,这样的好处是:快速方便.基本上,它会帮你解决所有的函数库依赖问题,正常情况下,只要apt-get执行完成,那么 ...

  7. Ubuntu上nfs的安装配置

    Ubuntu上nfs的安装配置 2007-07-01 09:04 Ubuntu 默认是没有nfs服务的,所以需要自己安装 1.安装nfs服务版            apt-get install n ...

  8. Ubuntu环境下如何安装指定版本的Gcc,比如Gcc4.4

    Ubuntu环境下如何安装指定版本的Gcc,比如Gcc4.4 2015-07-16  北京  张俊浩 ubuntu 32bit系统下安装gcc 4.4的最好方法是仅用以下两条命令,不需要其它命令,否则 ...

  9. 如何查看java版本 ubuntu_在Ubuntu上验证JAVA安装并检查已安装的版本(如果有)

    Ubuntu中的某些应用程序要求在系统上安装Java Runtime Library.大多数Ubuntu版本默认情况下都不提供此功能,因为在您的系统上安装Java时,安全性是一个问题.一次又一次,常规 ...

最新文章

  1. 一行js_Node.js 一行命令上传本地文件到服务器
  2. android异常 More than one file was found with OS independent path ‘META-INF/XXX‘
  3. 软件需求工程与UML建模——第九组原型系统总结
  4. Leetcode 122. 买卖股票的最佳时机 II 解题思路及C++实现
  5. HarmonyOS之AI能力·通用文字识别技术
  6. 用字符串表达式访问JSON数据(java,fastjson)
  7. goland中grpc的安装
  8. springboot(四)——@EnableConfigurationProperties是如何起作用的你知道吗
  9. 【转载】特殊宏://{{AFX_MSG、//{{AFX_VIRTUAL、//{{AFX_MSG_MAP、//{{AFX_DATA_INIT
  10. 东芝M300系列笔记本拆解图片教程 (跟自己电脑很像)
  11. osg动态加载模型不显示_探索未知种族之osg类生物---渲染遍历之Renderer::draw()简介...
  12. Java-bug记录【1】
  13. Eclipse主题下载安装
  14. C语言:判断对错(简化版)
  15. 东芝笔记本电脑重装系统
  16. 【时空序列预测第四篇】PredRNN++: Towards A Resolution of the Deep-in-Time Dilemma in Spatiotemporal Predictive
  17. PowerDesigner中pdm设置1:n,1:1,n:n的对应关系
  18. 纯CSS3实现的纸张褶起动效
  19. 两条命令解决移动硬盘无法弹出的问题
  20. html5添加flash动画效果,霸气的HTML5 7款无Flash HTML5动画特效

热门文章

  1. Bzoj14981416: [NOI2006]神奇的口袋
  2. MySQL的odbc驱动 下载及安装
  3. linux page buffer cache深入理解
  4. 新站结合熊掌号的实际操作 实现当天收录
  5. 做了个梦,你大爷的,叫什么事啊,吓死我了!
  6. 度量网络延迟和吞吐量
  7. Linux 命令(59)—— c++filt 命令
  8. C++利用MySQL API连接和操作数据库
  9. 动态规划解决约瑟夫环问题
  10. 数据结构概念及连续存储数组的算法演示