- 首先,為了避免要升級的rails版本跟原本系統中的版本有衝突,我們要先安裝 rvm(Rails Virtual Machine)。 (先變成bash, rvm 目前只支援 bash) 參考Xdite的 步驟
http://blog.xdite.net/mac-lion-xcode-ruby-rails-192/
1. 按照裡面安裝 RVM 與 Ruby 1.9.2
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
檢查 ~/.bashrc 或者 ~/.bash_profile 有沒有 PATH= $PATH:$HOME/.rvm/bin 存在
接著設定安裝目標的rails版本
$rvm install 1.9.2
接著安裝必要的rubyGems
$ gem install rails -v=3.2.2
$ gem install mysql2
$ gem install passenger
$ gem install nokogiri
$ gem install capistrano
$ gem install capistrano-ext
$ gem install delayed_job
$ gem install hoptoad_notifier
$ gem install facebooker2
$ gem install factory_girl
以上是先設定環境的部份
2. 修正原本的rails project
先修改讓原始的rake可以 run
新增 require ‘thread’ 在 Rakefile, script/server 以及 script/generate
2.1 接著下載已經寫好的upgrade套件
https://github.com/rails/rails_upgrade
如果有git的話就用$ git clone https://github.com/rails/rails_upgrade.git
如果沒有的話可以下載zip檔案,總之先確認自己已經在rails project的root了(裡面有 app/, config/, db/, …, etc.)
接著著按照https://github.com/rails/rails_upgrade 的指示
2.2
$ rake rails:upgrade:check
會出現很多Warnings
把這些warning儘量修掉,因為這些意味著在rails2的語法可以動,但是Rails3的時候大部分已經被停用了。最常出現的bug不外乎語法上的代換,還有vendor/plugin裡面的套件需要替換成gem 或者有些在新版的時候已經放進去lib裡面了。
2.3 下一個指令,把你原本的會造成衝突的檔案備份
$ rake rails:upgrade:backup
這些檔案會被加上*.rails2的附檔名儲存起來。
2.4 接著修正config/routes.rb的檔案。
$ rake rails:upgrade:routes
這個指令會產生轉譯過的你原本的的config/routes檔案,確認可以使用之後。修正為新的要用的config/routes.rb
$ rake rails:upgrade:routes > routes.rb
$ mv routes.rb config/
2.4 產生新的application.rb
rake rails:upgrade:configuration
這個指令會依照你原本的environment.rb產生新的application.rb檔案。
原始的environment.rb會拆成新的environment.rb 以及application.rb檔案。
同樣確認後覆蓋過去。
$ rake rails:upgrade:configuration > application.rb
$ mv application.rb config/
以上是使用別人寫好的套件修正我們的project
3. 在原始的project產生新的rails 3 project
以下的動作是不可逆的,請確認你已經有把原本的project備份了
$ cp -rf ../railsapp ../railsapp_backup
首先確認目前的rails版本已經是 3.2.x 而且是rvm產生的
$ rails -v
接著產生新的rails project
$ rails new ./
會有很多檔案需要覆蓋或者保留,可以使用’d’去看是否需要被修正,這邊就要不斷的try and error,有些被覆蓋過去之後router就會壞掉。注意 config/routes.rb config/application.rb 還有config/environment.rb不可以被覆蓋。
把舊的vendor/plugin轉換成新的 gems 在 Gemfile裡面
修正Funshionchart on rails3
http://forum.fusioncharts.com/topic/8111-fusioncharts-rails-3-sample-application/
基本上只是把需要的這個rails_project裡面的lib檔案丟到我們自已的rails_project裡面的lib即可代換掉,注意一下function引入的參數量會稍稍不同。不過原則上是大同小異。
接者就是把一些會error的語法修正即可,可以藉由這個機會趁機多熟悉rails3的語法。
基本上大架構不會改變太多,只是把MVC的結構更完善的體現囉。
沒有留言:
張貼留言