Homebrew 是一套在 Mac OS X 下使用的套件管理工具,以往大家會使用 Mac Ports ,但是 port 的套件相依性太深,常常會為了裝個小套件而跟著裝上一堆用不到的相依套件,甚至造成套件版本衝突…… 因此 Homwbrew 甫一推出立刻受到大家的歡迎。
今天早上我剛好重裝 readline 套件,安裝完成後訊息提示我 readline 套件是 「keg-only」。我為了查出「keg-only」到底是指什麼意思,結果解開一連串的謎題,真相終於大白! Homebrew 的所有命名真的非常有邏輯~~
首先, brew 本身是釀造、釀酒的意思,會用這個字的原因是 homebrew 的安裝方式為下載 source code 回來做編譯,由於是在自己電腦做 local complie 編譯套件,所以這個工具叫做 homebrew 自家釀酒。

笨笨小蟹 發表在 痞客邦 留言(7) 人氣()

這個功能其實從 Rails 2 就有了(也許更早,我不太確定),不過我最近才有機會研究了一番,看的也是 Rails 3 的文件。
要在 model 裡面使用 serialize 有一個限制,就是該欄位必須是 text 格式,所以在玩這個功能之前請先 migrate 一個 text format 的 column 出來。
寫法如下:
class User < ActiveRecord::Base
  serialize :preferences
end

笨笨小蟹 發表在 痞客邦 留言(1) 人氣()

有些時候需要撈資料,找出重複的記錄,但 Ruby Array 本身沒有這種功能的 method ,所以就自己打開 class Array 加進去吧!
class Array
  def find_dups
    uniq.map {|v| (self - [v]).size < (self.size - 1) ? v : nil}.compact
  end
end

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

會使用到 Jammit gem 的原因是,我發現網站在 6 月改版後,就常常會發生網站脫衣服(吃不到 css)的狀況,而且都是在上班時間。
翻 log 查到原因後發現,原來是因為原本網站的伺服器只有一台,改版時調整成兩台並且做 HA ,問題就出在多台伺服器上。
Rails 的 layout 中, stylesheet_link_tag 我有設定 :cache => :merge_index ,因此看原始碼時會發現,網站只有讀取 merge_index.css ,這段設定就是請 Rails 幫忙把數隻 css 壓成一隻,減少 http request 的數量。

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

update: 2011/08/31
Rails 3.1.0 釋出後,迅速的在 Guide 網站補上 Asset Pipeline 教學!
http://guides.rubyonrails.org/asset_pipeline.html

笨笨小蟹 發表在 痞客邦 留言(1) 人氣()

css3buttons_rails_helpers gem 是幫助你將網站套上精美的 github style button 。
https://github.com/thetron/css3buttons_rails_helpers
 

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

記錄幾個好用的 tmbundle ,可以幫助整理 coding style 。
首先是小技巧,要設定 TextMate 使用 tab 時的對應字元,就在視窗的最下方,有個顯示 Soft Tabs: 2 或是 Tab Size: 4
我的團隊是使用 space 2 做為 indent ,所以是設定 Soft Tabs: 2 。

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

在 rails 的專案內設定 .gitignore ,忽略掉 config/database.yml ,但是卻一直出現在 changed status 上。
這問題以前遇過一次,但是忘了記錄下怎麼解決,這次來寫解法。
reference:
http://stackoverflow.com/questions/3296739/git-not-ignoring-certain-xcode-files-in-gitignore

笨笨小蟹 發表在 痞客邦 留言(1) 人氣()

上班一年多了,最近一次的大型專案開發在 6/1 上線,來利用這篇文章反省加檢討我參與過的專案管理與開發時程問題。
先講很失敗的第一次,因為對當時的實力掌握太差,所以最後大受打擊無疾而終。
處理的專案是廣告系統的後台,需要改寫並新增功能,但我想完 model ,寫完 CRUD 之後就停滯了。

原因1:當時的我,對於基本網站架構還不夠熟悉,在規劃 CMS 上也不夠清楚,因此上稿的部份寫完,與前台接軌就卡住了。
原因2:寫完那些 CRUD 之後,因為我同時還要顧及美妝的專案,每個月固定都要寫 event ,雙管齊下當時的我無法吃下來。
原因3:時間管理太差,我當時沒有把整個負責部分切開成一張張小票的能力,整個混在一起沒頭沒腦地做,難以掌控進度,也無法知道什麼時候要完成哪些區塊。

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

本篇的作法是我參考了文末的 reference 後融合而成。
在 app/controllers/application_controller.rb ,首先在最前面加上
unless Rails.env == 'development'
  rescue_from Exception, :with => :render_500 
  rescue_from RuntimeError, :with => :render_500
  rescue_from ActiveRecord::RecordNotFound, :with => :render_404
end

笨笨小蟹 發表在 痞客邦 留言(2) 人氣()

舉例一個很常見的狀況,如果要找匿名文章的話,會下
@posts = Post.where("user_id IS NULL")
這可以等義於以下這種寫法,而且也比較推薦這樣寫,因為是使用 ruby 的格式而不像是 sql command 的格式。
@posts = Post.where(:user_id => nil)

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

2011/06/06更新: 後來看到有 whitespace-tmbundle ,裝完之後只要 cmd+s 就會自動清除行末空白以及將 tab 換成 space 。
whitespace-tmbundle
===
用 textmate 的話,可以開 Find in Project (熱鍵: shift+cmd+f)

笨笨小蟹 發表在 痞客邦 留言(0) 人氣()

1 2 3 4 5
Blog Stats
⚠️

成人內容提醒

本部落格內容僅限年滿十八歲者瀏覽。
若您未滿十八歲,請立即離開。

已滿十八歲者,亦請勿將內容提供給未成年人士。