第一次接触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也是可以的