因项目需要,主要是考虑到我们项目的高可变性,以及由此产生的高适应性,所以选择用ruby。跟Java相比,ruby的确比较灵活,能写出千变万化的代码。
但是,比较可悲的是,在windows7上面搭建ruby环境问题比较多。无论是基于cgywin,还是直接使用netbeans都不尽如人意。
因为想调整webserver使用nginx+thin,而不是webrick,所以,要考虑thin的适应性。没想到,使用当前的ruby1.9.3 p134还有问题。在项目路径下,每次运行thin start,到最后总是提示intercepter error,但是用webrick就是好的。可能thin跟1.9.3的还没有很好的结合。
所以,切换到linux下试试环境。
经过见缝插针的努力,终于看到点希望,搭建好了thin server。
先总结一下,以备后用。我的os是ubuntu12
1.安装rvm:
这个比较简单,直接通过官网(https://rvm.io/rvm/basics/),照上面的说明做就可以:
curl -L get.rvm.io | bash -s stable(如果提示没有curl,就先sudo apt-get install curl)
安装完成rvm,会有个提示,里面有说需要 source /home/eric/.rvm/scripts/rvm (这里可能根据不同的安装路径,有所不同),需要仔细看看那个安装完成的提示。如果不做这一步,运行rvm时,会有rvm不是一个函数的错误提示。
2.安装rvm的支持包:
如果不安装这些包,在运行gem的时候,会出现少包的情况,那难免又要重新安装和编译,所以把这一步提前。
对照rvm的官网关于package的部分(https://rvm.io/packages/),主要有zlib和openssl,zlib是gem会用到的,openssl是rails中会用到的。所以,先通过官网的命令安装:
rvm pkg install zlib
rvm pkg install openssl
3.安装ruby
不多说了,直接上:
rvm install 1.9.2
rvm install 1.9.3
上面两个命令都会获取两个版本的最新build。
4.设置默认ruby和gemset:(以下都会用到1.9.2,这个版本时间比较长,一些组件比较稳定)
rvm --default use 1.9.2
rvm有一套gem的管理机制,就是gemset,具体理论不多说,各位看官网吧。有些东西会在命令之间做个简单说明。个人理解,因为gem都是放在ruby编译器对应的gem路径下的,就像是java的classpath。所以,应该先确定ruby版本,然后创建gemset,这个gemset是跟ruby对应的。如何查看gemset里面有哪些包,也很简单只要指定了某个gemset,然后运行gem list就可以查看这个gemset里面的gem列表。
现在开始管理gemset:
创建gemset:rvm gemset create gemset_name
然后选择启用哪个gemset:rvm gemset use gemset_name(如果你忘了那个gemset,可以rvm gemset list查看)
启用了对应的gemset之后,可以通过rvm gemdir查看正在使用的gemset路径,当然,也可以通过rvm gemset list查看,在列表里会有箭头指向正在使用的gemset。
现在就可以安装各种gem了:gem install rails
5.rails安装完成之后,创建项目:
rails new mytestproj
创建完成之后,我要使用thin和mysql,于是:
cd mytestproj
vi Gemfile
注释掉sqlite,增加
gem 'mysql2'
gem 'thin'
保存退出,运行:
bundle install(我在运行时出现mysql没有安装的提示,于是又安装了mysql server和apt-get install mysql-client-core-5.5,再运行这个命令)
运行正常。
6.测试启动:
rails server thin
ok
又出问题了,提示execjs没有js运行时错误,于是sudo apt-get install nodejs
再运行,这次真ok了。
以上是个人安装过程的流水,笔记一页,以供参考。
问题收集:
1.刚启动rails项目时出现了如下的问题:
rails server thin
/home/eric/.rvm/gems/ruby-1.9.2-p320@athena-proj/gems/mysql2-0.3.11/lib/mysql2.rb:9:in `require': libmysqlclient.so.18: cannot open shared object file: No such file or directory - /home/eric/.rvm/gems/ruby-1.9.2-p320@athena-proj/gems/mysql2-0.3.11/lib/mysql2/mysql2.so (LoadError)
解决方法:
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/libmysqlclient.so.18
如果还是找不到,可能是因为你的服务器是64位的缘故,再做如下处理:
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib64/libmysqlclient.so.18