顯示具有 ruby on rails 標籤的文章。 顯示所有文章
顯示具有 ruby on rails 標籤的文章。 顯示所有文章

星期一, 3月 11, 2013

rails 101 練習(6)

練習作業6 - 撰寫自動化 Rake 以及 db_seed
這一章不難,照著做就可以了。要新增 Rake 的 tasks 是在 lib/tasks 下加檔案,打 rake -T 就可以看到新增的 task。要預先建制基本的資料,則是要修改 db/seeds.rb,在裏面寫程式去操作。
練習作業7 - 將論壇 deploy 到租來的 VPS
這一章因為沒打算租 VPS,所以就紀錄重點,沒實際練習。
作者建議用獨立版本的 Ruby 以及 Ubuntu/Debian,一般系統的 Ruby 與套件都較老舊,所以不建議。ImageMagick 還是沒提到為什麼會有雷,這再找找看好了,總是要知道為什麼吧。[1]
作者習慣在 enom.com 買域名,在 linode 租 VPS。之後就是教導怎麼使用 capistrano,這邊要做不少設定,由於沒打算租用,這部份就跳過去啦。[2]
註:
  1. 我還是找不到為什麼有雷,難道指的是無法順利轉換圖檔的尺寸與解析度嗎?至少照我目前的環境與步驟是可以轉換的。
  2. 其實應該也不用租用,就拿自己家裡的伺服器來實驗應該也是可以。

星期五, 2月 08, 2013

rails 101 練習(5)

練習作業4-為每篇文章加上分頁機制,就介紹 counter cache、pagination 跟 scope,照著做沒什麼問題。scope 的部份會比較需要去思考,他的用法真的很巧妙。
練 習作業5-每一篇文章可以上傳附件,安裝 paperclip 會撞到牆。paperclip 最新的版本需要 Ruby 1.9.2 以上的版本,而依照前面的環境架設,Ruby 是 1.8.7,在 Gemfile 的地方,要改用 gem "paperclip", "~> 2.7" 這樣就可以順利安裝了。
然後試著要上傳時,就出現警告說,ImageMagick 沒安裝,這是我之前偷懶沒做的部份。就回頭做,想說試試看用系統的 ImageMagick 會發生什麼事情,就不管作者的警告,用 apt-get 安裝上去,然後用 gem 安裝 rmagick。在安裝時,會說找不到 imagemagick 的 header 檔,imagemagick 的 header 檔案是在另外兩包裡,所以要再下 sudo apt-get install libmagickcore-dev libmagickwand-dev  來安裝。 安裝完以後,再用 gem install rmagick 就可以了。
接著的部份照做就沒什麼問題了。

星期一, 2月 04, 2013

rails 101 練習(4)

練習作業2-為論壇加入使用者機制
這一章沒什麼問題,主要是編輯 Gemfile 裝上 devise plugin 來達成使用者機制。
練習作業3-為論壇加入管理者機制以及管理者後台
這一章也沒什麼問題,照著改,是很快改好,但用了很多時間找錯誤,有些甚至是之前沒注意到的地方。這邊 xdite 是用 diff 的方式來表示修改過的地方,顯得比較凌亂,照著打容易錯漏(也可能是我眼力變差了)。
今天搞定以後,想到一件事情,如果有用版本控制的話,在每章做完,測試完成以後,最好上個 tag,這樣在出錯時,可以用 git diff 跟之前的 tag 做比對,看到底那邊沒改到。
$git tag end_of_practice_3
參考資料:

星期四, 1月 31, 2013

rails 101 練習(3)

接著昨天的 5.4.5 開始做。
做的時候,發現最好在建好專案的時候,就使用 git init && git add . 把檔案都納入版本控制。之後每次修改、測試完成,就提交。這樣除了很清楚每個步驟修改了什麼之外,也可以方便的進行練習作業。例如 5.4 是 scaffold,而 5.5 是衍生練習作業,要練習就可以先回復到 5.3 的版本,然後再建 branch 出來練習。這意味著,最好是把 git 練熟比較好,要不然就是要多開幾個目錄來練。
在 5.7 resources 與雙層 resources 的地方,要注意檔名所在路徑有錯,記住大原則,routes.rb 一定在 config 下,.html.erb 一定在 app/views 下...,這樣就不會找不到檔案可改。在這邊我是用打字的,所以我把時間花在找打字錯誤上,書上的程式沒問題。

星期二, 1月 29, 2013

rails 101 練習(2)

從第五章建 scaffold 開始,在執行 rake db:migrate 時撞到牆。rake 吐出錯誤訊息:
ERROR: 'rake/rdoctask' is obsolete and no longer supported. Use 'rdoc/task' (available in RDoc 2.4.2+) instead.
找了好多文章,都說要用移除現有的 rake,安裝回 rake 0.8.7 才可以。我是卡在無法移除 10.0.3,後來是找到 stackoverflow 的這篇,說要用 rvm use @global && gem uninstall rake -v 10.0.3。執行以後先按 Y,再按 N,再執行 rake 會有錯誤,所以我再執行一次 gem install rake -v 0.8.7 來安裝。
回 到專案目錄下再次執行 rake db:migrate,出錯,說不滿足條件,要重新 bundle install,原來 gem 的 requirement 會紀錄在 Gemfile.lock 裡,修改完 Gemfile.lock ,執行 bundle install 以後,就可以執行 rake db:migrate 了。此時資料庫是用 sqlite3,路徑在專案目錄的 db 下,名稱是 development.sqlite3 。
今天就做到 5.4.5。

星期五, 1月 25, 2013

rails 101 練習(1)

一兩年前就買了Rails 101,只翻了一點點,就擱下了。 最近朋友也買了,正在練習,因為他是 Linux 新手,就撞了蠻多牆,問了我不少問題,是故,我也跟著看和做了一次。我的環境是 Ubuntu 12.04。
  1. 安裝必要的套件:sudo apt-get install build-essential zlib1g-dev libssl-dev libreadline-dev libmysqlclient-dev libbuilder-ruby
  2. 安 裝 rvm:curl -L https://get.rvm.io | bash -s stable --ruby ,這是用 curl 抓取 script 內容,並且導向到 bash 去執行,-s 表示 script 會從 stdin 來,stable --ruby 是給 script 使用的。
  3. 初使化 rvm 環境:source .rvm/scripts/rvm ,這行很重要,之後重新開 terminal 時,都要確定有導入 rvm 環境,要不然會有錯誤。
  4. 安裝 ree:rvm install ree ,然後設為預設: rvm ree --default 。(rvm 可以安裝不同版本的 ruby,像 jruby, ironruby, ruby 等等的,很方便)
  5. 新 增 ~/.gemrc,內容是 gem: --no-ri --no-rdoc ,這樣之後 gem install 時,就不產生 doc 檔案,這部份是參考 Ruby on Rails 實戰聖經裡的建議做的。如果不加這個,會撞到牆,說文件產生不出來,需要安裝別的套件才可以。有在另外一台電腦上試過,要先 gem install rdoc-data,再 rdoc-data --install ,應該就可以。反正暫時不會用到 doc,不如就不安裝。
  6. 安裝 rails:gem install rails -v=3.0.7
  7. 安裝 mysql gem:gem install mysql
  8. 書裡提到不要用預先編譯好的 Imagemagick,而要自行編譯,沒說原因。這步驟我跳過了。
  9. Apache 跟 POW 我也都跳過了,目前是練習,所以先用 rails server 頂著就好。
  10. 建新專案跟檢查:rails new forum_demo && cd forum_demo && bundle check && bundle install
  11. 啟動 web server:rails server ,然後開啟瀏覽器,網址輸入 http://localhost:3000 就可以看到頁面。
  12. 新 增 controller 跟頁面,就是照書上講的,會碰到狀況的,就是要先刪除掉 public/index.html,這樣才會出現新增的頁面。原本沒注意到要刪除,我想說因為是 pages controller,就用 http://localhost:3000/pages/welcome ,理論上應該會看到,結果卻說 route 未定義,應該是還有地方沒設定吧。
今天先做到這裡為止。

星期五, 12月 28, 2007

[Linux]如何在 CentOS 安裝 Ruby on Rails

如果你照著這篇:在 CentOS 安裝 Ruby on Rails,卻怎麼樣也裝不起來的話,我想你碰到跟我一樣的問題了。錯誤訊息可能會是這樣子的:
ERROR: While executing gem ... (Gem::GemNotFoundException)
Could not find rails (> 0) in any repository


研究了一下,發現應該是因為 RubyWorks 所提供的Source 沒有 rails gem 的關係,這也跟 RubyWorks 定位為 Production server 有關係。

總之如果你想把 CentOS 當作開發環境的話,不妨用
$sudo gem sources -a http://gems.rubyforge.org
把官方的 gem source 加進去,然後再輸入
$sudo gem install rails -y
即可。