Ruby on Rails 实战

安装 Rails 开发环境

Give someone a program, you frustrate them for a day; teach them how to program, you frustrate them for a lifetime. - David Leinweber

在这一章中,我们将介绍如何安装Ruby on Rails的开发环境。开发Rails的环境需要:

Ruby 2.2.2以上版本或JRuby,本书使用2.4.0

数据库系统,Rails默认使用SQLite可以作为新手开发练习之用,正式上线环境则推荐使用MySQLPostgreSQL

Ruby on Rails,本书适用5.0+版本。

JRubyRuby最大的差异在于一些需要编译的RubyGem套件:有些因为效能要求而用C语言撰写的RubyGemJRuby上不一定能够安装使用。所幸这些多半都有替代的套件可以使用,但不在本书介绍范围。

以上差不多就是最基本的开发需求。如果需要部署到正式上线环境,则至少还需要一个专门的网站服务器(ApacheNginx等),我们会在布署一章再详细说明。接下来我们会根据不同作业系统来说明如何安装Rails开发环境。

作业系统

Ruby可以运行在WindowsLinuxMac OS XBSDSolaris上。虽然Rails可以在Windows上执行,但是有些套件只有支援Unix-like作业系统,以及Ruby程式在Unix-like系统上执行起来也比较快速及稳定。这是因为绝大多数的RubyRails开发人员都是使用MacLinux系统。

Unix-like泛指各种传统的Unix系统,比如FreeBSDOpenBSDSolaris,以及各种与Unix类似的系统,例如LinuxMac OS X等等。有的是自由软件,有的是商业软件,但都相当程度地保留了原始Unix系统的特性,以及有许多相似之处。

因此,Rails的正式上线环境中都会强烈建议使用Unix-like作业系统。作为开发人员,拥有良好使用者接口、底层又与Unix类似的Mac作业系统就变成了首选的开发平台,大部分的专业Ruby工作者,也都是使用Mac电脑。不过,使用Windows的朋友也别太担心,本书的内容大致适用,入门学习应该没问题。只是如果读者的每日工作就是进行Web网站开发,那么我会建议您考虑使用Mac OS系统或试试Ubuntu Desktop作业系统。和学习Ruby一样,从 Windows转换到头来Mac也是非常有趣的事情,可以获得不少乐趣。

这是使用开源软件需要考虑的因素:开源软件是靠社群维护的,因此较多人使用的主流平台(作业系统、数据库等)就会支援较佳,而越少人用的平台就会地雷较多。

数据库

Rails支援的数据库包括SQLite3MySQLPostgresIBM DB2OracleSQL Server等。除了安装数据库软件,我们也需要安装搭配的Ruby函式库(称作AdapterDriver)。作为新手的单机练习,使用SQLite就可以了,本章会先介绍SQLite的安装方式。附录则会介绍如何安装MySQLPostgreSQL

开发环境

命令列视窗

有许多工作需要透过指令列接口CLI (Command Line Interface)完成,像是安装套件、执行rails指令、执行测试等等。虽然有一些GUI图型接口工具可以辅助,但是到头来你会发现还是直接在指令列输入最快最可靠,发生问题的时候也容易除错。

Mac OS下要进入命令列视窗,请打开Go->Utilities中的Terminal,或是笔者推荐可以安装iTerm2Ubuntu Desktop下是Applications->Accessories下的TerminalWindows则是「开始->附属应用程式」中的「命令提示字符」。

Unix-like的指令和Windows的指令很多是不同的,以下是一些常用的指令:

用途Unix-likeWindows

移动所在目录cd XXXcd XXX

移动到上一层目录cd ..cd ..

显示目前所在目录pwdcd

显示目前目录的档案lsdir

删除档案rm XXXerase XXX

删除目录rmdir XXXrmdir XXX

建立目录mkdir XXXmkdir XXX

另外,在输入档名或目录名时,可以按tab来自动完成。

不熟稔CLI的话,建议可以阅读The designer’s guide to the OSX command promptThe Command Line Crash Course进行恶补。

开发软件

在开始写点程式之前,让我们先介绍一下有什么推荐的编辑器。相较于静态语言如C++、Java喜欢功能丰富的IDE(Integrated Development Environment)软件,动态语言虽然也有一些IDE软件,但是更多人比较偏好简单的文字编辑器(Editor)加上命令列视窗就可以打遍天下。这是因为对表达能力强的动态语言来说,IDE提供的自动产生程式码、编译程式、复杂的浏览功能等等都不是这么需要。

Editor文字编辑器

Sublime Text (WindowsLinuxMac平台)

ATOM (WindowsLinuxMac平台)

Vim

IDE软件

JetBrains RubyMine

无论用什么编辑器,请注意档案的格式要储存成UTF-8,无BOM(byte-order mark)表头。

版本控制系统

版本控制系统可以保存所有的程式变更,记录谁改变什么、在什么时候、因为什么原因,是团队开发不可或缺的协同工具。Ruby社群普遍使用Git这套分布式版本控制系统。虽然学习Rails不必要学会Git,但是因为Rails本身以及绝大部分的相关套件都是使用Git版本控制系统、并放在GitHub上。所以你最好还是安装有Git并学会基本的操作。关于Git的介绍请参考附录。

安装Ruby及数据库

以下是分别在Mac OSXUbuntu Desktop作业系统上,安装Ruby最快速方便的方式。在上手Rails的开发之后,可以再参考附录,依需求安装不同开发环境。

Mac OS X

我们使用Homebrew这套工具来管理MacOS上的套件,这可以方便安装一些常用的工具软件,例如GitMySQL,甚至是MemcachedElasticsearchRedisMongoDB等等都可以透过Homebrew安装。本书的Mac安装步骤中会使用到Homebrew,它的安装步骤是执行:

过程中会跳出一个视窗询问是否安装XCode的命令列开发者工具(Command Line Tools),请选择安装。如果没有的话,请手动执行 xcode-select --install 这个指令。

完成后回到命令列继续Homebrew的安装。

Mac OS虽然内建了Ruby,却是比较旧的版本,这里我们透过Homebrew安装最新版的Ruby

完成之后输入以下指令可以看到安装的版本:

Windows

请至RubyInstaller下载Ruby安装包,如果Windows是64位元则下载(x64)的版本。安装过程中请点选将Ruby加入可执行的路径(Add Ruby executables to your PATH)

我们开发用的SQLite3数据库函式库在Windows上不支援Ruby 2.2的版本,请下载2.1的版本。(2015-06-09 的实验结果,后来有没有支援不清楚)

安装成功之后,打开「附属应用程式」的「命令提示字符」,输入以下指令可以看到安装的版本:

另外,有一些RubyGems套件会需要编译动作,所以还需要Development Kit。请下载DevKit-mingw64-32-4.7.2-20130224-1151-sfx.exe或64位元的DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe,解压缩放在C:\DevKit下,接着在「命令提示字符」中进入这个目录,输入以下指令:

另一种在Windows开发的方式则是使用虚拟机器(Virtual Machine),例如用VirtualBox来跑Ubuntu Desktop Edition,或是使用Cygwin来提供Unix-like环境。如此就可以避开Windows上的种种地雷。

RubyGems简介

RubyGemsRuby的套件管理系统,让你轻易安装及管理Ruby函式库。你可以在RubyGems上找到所有的Ruby开源套件。另外,读者如果想找RubyRails有哪些好用的套件,也可以浏览看看The Ruby Toolbox,这个站依照套件的热门程度排序,非常方便。

常用指令

执行gem install gem_name的时候,它会在安装完之后,自动产生此套件的RDocri文件。不过有鑑于目前网络发达,往往直接 Google或是在套件官网就可以查询到文件,所以其实不太需要在本地端机器产生文件,况且安装的时间耗时又佔硬盘空间。要省略这个步骤,有两种方式:

每次安装时,加上以下参数:

或是新增一个~/.gemrc档案内容如下,默认就不产生文件:

安装Ruby on Rails

为了节省安装时间可不安装文件档,这里加上--no-ri跟--no-rdoc参数。安装完成之后,输入rails -v你应该会看到Rails 5.1.0

使用者Windows的朋友可能需要手动安装,请参考 INSTALLING USING UPDATE PACKAGES

中国大陆地区的朋友如果碰到网络连线问题(你懂的),请改使用RubyGems镜像- Ruby China

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,530评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,403评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,120评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,770评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,758评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,649评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,021评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,675评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,931评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,751评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,410评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,004评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,969评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,042评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,493评论 2 343

推荐阅读更多精彩内容