Give someone aprogram, you frustrate them for a day; teach them how to program, you frustratethem for a lifetime. - David Leinweber
在这一章中,我们将介绍如何安装Rubyon Rails的开发环境。开发Rails的环境需要:
· Ruby 1.8.7、1.9.2以上版本或JRuby,本书使用1.9.3。
· RubyGems,这是Ruby的套件管理系统,本书推荐1.3.7版或1.8.10以上。
· 数据库系统,本书推荐使用SQLite作为新手开发练习之用,正式环境则推荐MySQL或PostgreSQL。
· Ruby on Rails,本书适用3.2版本。
请注意Rails 3不支持Ruby 1.9.1这个版本。
Ruby 1.9系列和之前版本的最大的差异在于编码的处理,例如:如果原始码里出现UTF-8中文,文件第一行必须加上# encoding: utf-8
标明,不然会出现invalid multibyte char (US-ASCII)
的错误,这一点要特别注意。
JRuby与Ruby最大的差异在于一些需要编译的RubyGem套件:有些因为性能要求而用C语言撰写的RubyGem在JRuby上不一定能够安装使用。所幸这些多半都有替代的套件可以使用,但不在本书介绍范围。
以上差不多就是最基本的开发需求。如果需要部署到正式环境,则至少还需要一个专门的网站服务器(Apache或Nginx等),我们会在布署一章再详细说明。接下来我们会根据不同操作系统来说明如何安装Rails开发环境。
Ruby可以运行在Windows、Linux、Mac OS X、BSD和Solaris上。虽然Rails可以在Windows上执行,但是有些套件只有支持Unix-like操作系统,以及Ruby程序在Unix-like系统上执行起来也比较快速及稳定。这是因为绝大多数的Ruby和Rails开发人员都是使用Mac和Linux系统。
Unix-like泛指各种传统的Unix系统,比如FreeBSD、OpenBSD、Solaris,以及各种与Unix类似的系统,例如Linux、Mac OS X等等。有的是自由软件,有的是商业软件,但都相当程度地保留了原始Unix系统的特性,以及有许多相似之处。
因此,Rails的正式上线环境中都会强烈建议使用Unix-like操作系统。作为开发人员,拥有良好用户接口、底层又与Unix类似的Mac操作系统就变成了首选的开发平台,大部分的专业Ruby工作者,也都是使用Mac计算机。不过,使用Windows的朋友也别担心,本书的内容一样都适用,入门学习绝对没问题。只是如果读者的每日工作就是进行Web网站开发,那么我会建议您考虑使用Mac系统或试试Ubuntu Desktop操作系统。和学习Ruby一样,从Windows转换到Mac也是非常有趣的事情,可以获得不少乐趣。
这是使用开源软件需要考虑的因素:开源软件是靠社群维护的,因此较多人使用的主流平台(操作系统、数据库等)就会支持较佳,而越少人用的平台就会地雷较多。
Rails支持的数据库包括SQLite3、MySQL、Postgres、IBM DB2、Oracle和SQLServer等。除了安装数据库软件,我们也需要安装搭配的Ruby函式库(称作Adapter或Driver)。作为新手的单机练习,使用SQLite就可以了,本章会先介绍SQLite的安装方式。附录则会介绍如何安装MySQL和PostgreSQL。
有许多任务作需要透过指令列接口(CommandLine Interface)完成,像是安装套件、执行rails指令、执行测试等等。虽然有一些GUI图型接口工具可以辅助,但是到头来你会发现还是直接在指令列输入最快最可靠,发生问题的时候也容易除错。
Mac OS下要进入命令行窗口,请打开Go->Utilities中的Terminal,或是笔者推荐可以安装iTerm。Ubuntu Desktop下是Applications->Accessories下的Terminal。Windows则是「开始->附属应用程序」中的「命令提示字符」。
Unix-like的指令和Windows的指令很多是不同的,以下是一些常用的指令:
用途 |
Unix-like |
Windows |
移动所在目录 |
cd XXX |
cd XXX |
移动到上一层目录 |
cd .. |
cd .. |
显示目前所在目录 |
pwd |
cd |
显示目前目录的文件 |
ls |
dir |
删除文件 |
rm XXX |
erase XXX |
删除目录 |
rmdir XXX |
rmdir XXX |
建立目录 |
mkdir XXX |
mkdir XXX |
另外,在输入档名或目录名时,可以按tab来自动完成。
在开始写点程序之前,让我们先介绍一下有什么推荐的编辑器。相较于静态语言如C++、Java喜欢功能丰富的IDE(IntegratedDevelopment Environment)软件,动态语言虽然也有一些IDE软件,但是更多人比较偏好简单的文本编辑器(Editor)加上命令行窗口就可以打遍天下。这是因为对表达能力强的动态语言来说,IDE提供的自动产生程序代码、编译程序、复杂的浏览功能等等都不是这么需要。
· Textmate http://macromates.com/ (Mac OS平台)
· Notepad++ http://notepad-plus-plus.org/ (Windows平台)
· SublimeText http://www.sublimetext.com (Windows、Linux、Mac平台)
· Vim http://www.vim.org/
· Emacs http://www.gnu.org/software/emacs/
· JetBrainsRubyMine http://www.jetbrains.com/ruby/
· AptanaRedRails http://aptana.com/products/radrails
无论用什么编辑器,请注意文件的格式要储存成UTF-8,无BOM(byte-order mark)表头。
版本控制系统可以保存所有的程序变更,记录谁改变什么、在什么时候、因为什么原因,是团队开发不可或缺的协同工具。Ruby社群普遍使用Git这套分布式版本控制系统。虽然学习Rails不必要学会Git,但是因为Rails本身以及绝大部分的相关套件都是使用Git版本控制系统、并放在GitHub上。所以你最好还是安装有Git并学会基本的操作。关于Git的介绍请参考附录。
以下是分别在Windows、Mac OSX、Ubuntu Desktop操作系统上,安装Ruby最快速方便的方式。在上手Rails的开发之后,可以再参考附录,依需求安装不同开发环境。
在Windows上开发Rails最快的方式是下载RailsInstaller安装包,这就包含了Ruby 1.9.3、Rails 3.2、SQLite 3、Git版本控制系统以及SQL Server Adapter。可以让你在很短的安装时间内就开始上手Rails。
使用Git版本控制系统请参阅附录。
为了顺利安装一些需要编译的套件,你必须先安装Xcode。XCode 4.3之后的版本,还必须手动安装Command Line Tools,请从Xcode menu > Preferences > Downloads进入安装。
接下来安装Homebrew来管理MacOS上的套件,这可以方便安装一些常用的工具软件,例如Git、MySQL、SQLite,甚至是Memcached、Sphinx、Redis、MongoDB等等都可以透过Homebrew安装。本书的Mac安装步骤中会使用到Homebrew,它的安装步骤是执行:
$ ruby -e "$(curl -fsSkL raw.github.com/mxcl/homebrew/go)"
Homebrew也是用Ruby程序语言撰写的。另一个比较老牌的套件管理工具是MacPort。
SnowLeopard和Lion内建了Ruby 1.8.7,所以这里透过Homebrew安装新的Ruby 1.9.3、Git、SQLite:
$ brew install git
$ brew install sqlite
$ brew install ruby
输入以下指令加入PATH(不同Ruby版本路径会不同,请依照装完brew install ruby之后的提示):
$ echo 'export PATH=/usr/local/Cellar/ruby/1.9.3-p327/bin:$PATH' >> ~/.bash_profile
$ export PATH=/usr/local/Cellar/ruby/1.9.3-p327/bin:$PATH
安装完成之后输入以下指令可以看到安装的版本:
$ git --version
git version 1.8.0.2
$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin12.2.1]
首先进行Linux更新:
$ sudo apt-get update
$ sudo apt-get upgrade
安装必要的套件:
$ sudo apt-get install build-essential bison openssl libreadline6 libreadline6-dev curl git-core zlib1g zlib1g-dev libssl-dev libyaml-dev libsqlite3-0 libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev
接着下载Ruby原始码编译,请参考Ruby官网下载最新1.9版本:
$ wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p327.tar.gz
$ tar xvfz ruby-1.9.3-p327.tar.gz
$ cd ruby-1.9.3-p327/
$ ./configure
$ make
$ sudo make install
安装完成之后输入以下指令可以看到安装的版本:
$ git --version
git version 1.7.0.4
$ ruby -v
ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
SQLite Manager是一套Firefox plugin提供SQLite的GUI操作接口,可以用来方便检视数据库的内容。
中文版Ubuntu的默认apt-get套件服务器tw.archive.ubuntu.com有时候不太稳,必要时你可以修改/etc/apt/sources.list换成debian.nctu.edu.tw或archive.ubuntu.com。
RubyGems是Ruby的套件管理系统,让你轻易安装及管理Ruby函式库。你可以在RubyGems上找到所有的Ruby开源套件。另外,读者如果想找Ruby或Rails有哪些好用的套件,也可以浏览看看The Ruby Toolbox,这个站依照套件的热门程度排序,非常方便。
gem -v
告訴你
RubyGems
的版本
gem update --system
升級
RubyGems
的版本
gem install gem_name
安裝某個套件
gem list
列出安裝的套件
gem update gem_name
更新最新版本
gem update
更新所有你安裝的
Gems
gem install -v x.x.x gemname
安裝特定版本
gem uninstall gem_name
反安
裝
执行gem install gem_name
的时候,它会在安装完之后,自动产生此套件的RDoc和ri文件。不过有鉴于目前网络发达,往往直接Google或是在http://rdoc.info、http://api.rubyonrails.org和http://www.ruby-doc.org/core/就可以查询到文件,所以其实不太需要在本地端机器产生文件,况且安装的时间耗时又占硬盘空间。要省略这个步骤,有两种方式:
每次安装时,加上以下参数:
$ gem install gem_name --no-ri --no-rdoc
或是新增一个~/.gemrc
文件内容如下,默认就不产生文件:
gem: --no-ri --no-rdoc
Linux的用户需要加上sudo,例如sudo gem install gemname
。
首先是SQLite的Adapter:
$ gem install sqlite3 --no-ri --no-rdoc
最后是安装Rails了:
$ gem install rails --no-ri --no-rdoc
完成之后,输入rails-v
你应该会看到Rails 3.2.1。
Ubuntu下需要用root权限安装套件:sudo gem install rails
为了节省安装时间可不安装文件档,这里加上--no-ri
跟--no-rdoc
参数。