第一次接触ruby,对于ubuntu也不是很熟悉,搭建环境过程中遇到了一些问题,记录下来,没准对大家有点帮助,没准以后能有点参考价值。
本人操作系统ubuntn11.04

一。安装ruby
首先,自己尝试的装了一下ruby,ubuntu自带有安装方式



sudo apt-get install ruby



ruby -v 版本1.8.7

目前ruby都1.9.3了,所以想到给ruby升级,发现没有升级的命令(网上查了半天无果),决定卸载掉当前的ruby,碰巧三日兄友情提供了一种方案,详见:,于是卸掉:sudo apt-get remove ruby

rvm按照步骤装上了,但是问题了来了,rvm install 1.9.3-head 出问题了,我确定应该是我系统的问题,升级ubuntu(从10.10--11.04),还是不行,怒了,果断放弃这种方式。


查看http://guides.ruby-china.org/(貌似是官网,英文差看的中文网站)找到了ruby的几种安装方式:http://www.ruby-lang.org/en/downloads
看了通过指定版本安装:sudo apt-get install ruby1.9.1,提示“ruby1.91已经是最新版本”,但是不见它装。执行ruby -v,没装上。

最后没法忍受了,再网上寻找通过源码安装的方式:(参考网址:http://www.linuxidc.com/Linux/2012-01/51209.htm)
1.下载源码包(我下的1.9.2)



$ wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p290.tar.gz



2.解压



$ tar -zxf ruby-1.9.2-p290.tar.gz



3.进入解压包执行配置文件脚本



$ ./configure --prefix=/usr/local/ruby



4.编译安装



$ make && sudo make install



5.最后不要忘了设置环境变量(ubuntu下有多个地方都可以设置环境变量/etc/profile  /etc/envirronment),这里按照参考网址上给的方式设置,记住通过source /etc/environment使之生效

最后,ok,安装成功


二、安装gem
RubyGems安装很方便,参考:http://docs.rubygems.org/read/chapter/3
下载源码,解压,执行ruby setup.rb脚本就行了,从这可以看出,装gem之前得先装ruby。
gem升级也很方便:gem update --system

三、安装rails(完全参考:中文:http://guides.ruby-china.org/ 英文:http://guides.ruby-china.org/)

安装rails之后,创建指导手册上的blog例子,遇到了一些点,也写下来供参考。
构建一个rails工程



$ rails new blog



这里通常会卡在最后一步,这里可以采用taobao提供的镜像,或者自己找一个装好了所有gem的机子,启动gem服务器,然后将ip指上这台机子也行。具体参考帖子:http://ruby-china.org/topics/914

这里采用淘宝的镜像
1.



$ rails new blog --skip-bundle  #只是创建工程目录结构,不执行bundle install



2. 进入工程 修改Gemfile(执行bundel install的配置文件)的第一行:source 'http://ruby.taobao.org'
3.然后执行 bundle install



$ bundle install



此处在执行的过程种提示我没装sqlite3,再指导手册中提示过要安装这个数据库的,只不过当时没在意。如果想启这个blog工程服务的话,还是装一下吧,不然你还是得提供其他的数据库(具体的可以参考:指导手册)。

安装sqlite3



$ sudo apt-get install sqlite3



如果提示你安装不了,试着先安装libsqlite3-dev,再安装sqlite3(我遇到了)

4.rails server启服务
报错:



chenqiaoqiao@chenqiaoqiao-OptiPlex-760:~/workspace/ruby/blog$ rails server
/usr/lib/ruby/gems/1.8/gems/execjs-1.4.0/lib/execjs/runtimes.rb:51:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)
    from /usr/lib/ruby/gems/1.8/gems/execjs-1.4.0/lib/execjs.rb:5
    from /usr/lib/ruby/gems/1.8/gems/coffee-script-2.2.0/lib/coffee_script.rb:1:in `require'
    from /usr/lib/ruby/gems/1.8/gems/coffee-script-2.2.0/lib/coffee_script.rb:1
    from /usr/lib/ruby/gems/1.8/gems/coffee-script-2.2.0/lib/coffee-script.rb:1:in `require'
    from /usr/lib/ruby/gems/1.8/gems/coffee-script-2.2.0/lib/coffee-script.rb:1
    from /usr/lib/ruby/gems/1.8/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1:in `require'
    from /usr/lib/ruby/gems/1.8/gems/coffee-rails-3.1.1/lib/coffee-rails.rb:1
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `require'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:68:in `require'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `each'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:66:in `require'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `each'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler/runtime.rb:55:in `require'
    from /usr/lib/ruby/gems/1.8/gems/bundler-1.2.3/lib/bundler.rb:128:in `require'
    from /home/chenqiaoqiao/workspace/ruby/blog/config/application.rb:7
    from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/commands.rb:52:in `require'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/commands.rb:52
    from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/commands.rb:49:in `tap'
    from /usr/lib/ruby/gems/1.8/gems/railties-3.1.1/lib/rails/commands.rb:49
    from script/rails:6:in `require'
    from script/rails:6



解决方案:(参考:http://ruby-china.org/topics/1605)
方案一(验证过):解决方式是在gemfile中加入
Ruby代码
gem 'execjs'
gem 'therubyracer'
执行 bundle install

方案二(未验证):
gem install execjs
gem install therubyracer
sudo apt-get install nodejs

不难看出,实际上这里是缺少这两个gem

到这里,一切都ok了,执行rails server,发现服务起来了,然后按照指导手册上在浏览器上面输入:127.0.0.0:3000(这里就奇怪了为什么本机是127.0.0.0,不管,先试试),满怀期待的看到welcome aboard,结果失望的一踏糊涂,难道还有哪里不对?别急,试试127.0.0.1:3000看看,bingo~~服务成功起来~~

其实,后来细看启动信息http://0.0.0.0:3000也是可以的