很久没鼓捣rails了,之前虽然看过一段时间,但长时间不用慢慢地就忘记了,现在想尝试用rails做一些web开发方面的工作,因此,又重新搭建起开发环境,虽然有很多成熟的教程,但实际搭建起来还不是那么顺利的,这里把整个搭建过程记录下来以备后用。
注:本文基于ubuntu 14
安装RVM
RVM(ruby version manager)是ruby的版本管理工具,它可以方便的管理系统中安装的多个ruby版本,我们也主要用它来安装ruby,rvm的安装:
$ curl -sSL https://get.rvm.io | bash -s stable
安装完成后我们需要载入RVM环境,使其立即生效或者重启命令行窗口
$ source ~/.rvm/scripts/rvm
检查一下是否安装正确
$ rvm -v
>rvm 1.22.17 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis
<mpapis@gmail.com> [https://rvm.io/]
安装ruby
使用rvm安装ruby之前,此处可以使用原生的源,但下载比较慢,可以切换到淘宝提供的镜像源,切换方式:
$ sed -i 's!cache.ruby-lang.org/pub/ruby!ruby.taobao.org/mirrors/ruby!' $rvm_path/config/db
安装ruby
$ rvm install 2.2.0
安装完成后,在命令行检查下是否正确安装:
$ ruby -v
>ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-linux]
我们可以使用rvm将当前版本指定为我们默认使用的ruby版本,当然如果系统只有一个版本可以忽略该步骤:
$rvm use 2.2.0 --default
注意此处如果关闭终端命令行工具,重新打开输入ruby -v会发现提示你使用apt-get安装ruby,而实际上刚才我们已经成功安装了,我们再执行rvm use命令发现以下提示:
RVM is not a function, selecting rubies with 'rvm use ...' will not work.
You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
根据提示信息不难看出原因了执行终端命令时需要我们更新登录信息,我们可以按照提示直接在命令行输入以下命令:
$ /bin/bash --login
也可以直接在命令行窗口选择“编辑”->“配置文件”->“编辑”->“标题和命令行”,勾选“执行命令是更新登录记录”,这样每次打开终端就不会出现上面的问题了。
安装Rails
在安装ruby时已经安装了ruby自己的库管理工具gem,我们可以通过gem直接安装rails,先验证下gem是否正确安装:
$ gem -v
2.4.8
然后,在安装rails之前我们需要切换下镜像源,原有的镜像源屏蔽的很厉害,有时候直接安装失败,我们切换到淘宝提供的镜像源:
$ gem sources --remove https://rubygems.org/
$ gem sources -a https://ruby.taobao.org/
$ gem sources -l
*** CURRENT SOURCES ***
https://ruby.taobao.org
# 请确保只有 ruby.taobao.org
虽然迁移到淘宝镜像源但在实际安装中也不是很顺利,淘宝的镜像服务器迁移到阿里云上了,因此会将请求做重定向,安装过程比较慢,不知道是因为个人网络原因还是镜像源不稳定导致,一直卡在某个流程不动了,前后尝试了五六次总算安装成功了,在执行安装过程中,由于时间比较长可以增加参数-V实时跟踪下安装状态
$ gem install rails -V
然后测试安装是否正确
$ rails -v
Rails 4.2.2
至此,rails已经安装成功了,过程还算是比较顺利,比在windows下安装顺利多了,在windows下安装的过程着实很痛苦,经常缺少依赖。
我们可以用$ rails new demo
创建一个web应用程序了,创建成功后切换到该目录下,执行$ rails server
,此时可能会遇到提示一些依赖不存在的问题,原因是我们web工程下的Gemfile指定的sources源还是rubygems.org,可能会导致一些依赖下载不下来,此时,我们可以将Gemfile的sources改为淘宝提供的镜像,执行bundle install
可以看到依赖的组件都安装成功了。
再次运行$ rails server
,如果仍然不幸报错Could not find a JavaScript runtime. See https://github.com/rails/execjs for
那么需要我们手动安装三个依赖组件了:
gem install execjs
gem install therubyracer
sudo apt-get install nodejs
至此,一般就能启动成功了!