因項目需要,主要是考慮到我們項目的高可變性,以及由此產生的高適應性,所以選擇用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