Homebrew 是一套在 Mac OS X 下使用的套件管理工具,以往大家會使用 Mac Ports ,但是 port 的套件相依性太深,常常會為了裝個小套件而跟著裝上一堆用不到的相依套件,甚至造成套件版本衝突…… 因此 Homwbrew 甫一推出立刻受到大家的歡迎。

今天早上我剛好重裝 readline 套件,安裝完成後訊息提示我 readline 套件是 「keg-only」。我為了查出「keg-only」到底是指什麼意思,結果解開一連串的謎題,真相終於大白! Homebrew 的所有命名真的非常有邏輯~~

首先, brew 本身是釀造、釀酒的意思,會用這個字的原因是 homebrew 的安裝方式為下載 source code 回來做編譯,由於是在自己電腦做 local complie 編譯套件,所以這個工具叫做 homebrew 自家釀酒。

釀酒需要有配方 formula ,當你需要安裝套件時,流程就是下 brew 命令去根據配方 formula ,釀造出一桶(keg)酒來。所以 keg 指的是整個編譯完成的套件資料夾。

再來,放置套件的位置在 /usr/local/Cellar , Cellar 就是地窖,一桶一桶釀好的酒當然要存放在地窖裡囉!所以編譯完成的套件資料夾 keg 預設目錄在 /usr/local/Cellar 。

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

這個功能其實從 Rails 2 就有了(也許更早,我不太確定),不過我最近才有機會研究了一番,看的也是 Rails 3 的文件。

要在 model 裡面使用 serialize 有一個限制,就是該欄位必須是 text 格式,所以在玩這個功能之前請先 migrate 一個 text format 的 column 出來。

寫法如下:

class User < ActiveRecord::Base
  serialize :preferences

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

有些時候需要撈資料,找出重複的記錄,但 Ruby Array 本身沒有這種功能的 method ,所以就自己打開 class Array 加進去吧!

class Array
  def find_dups
    uniq.map {|v| (self - [v]).size < (self.size - 1) ? v : nil}.compact
  end

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

會使用到 Jammit gem 的原因是,我發現網站在 6 月改版後,就常常會發生網站脫衣服(吃不到 css)的狀況,而且都是在上班時間。

翻 log 查到原因後發現,原來是因為原本網站的伺服器只有一台,改版時調整成兩台並且做 HA ,問題就出在多台伺服器上。

Rails 的 layout 中, stylesheet_link_tag 我有設定 :cache => :merge_index ,因此看原始碼時會發現,網站只有讀取 merge_index.css ,這段設定就是請 Rails 幫忙把數隻 css 壓成一隻,減少 http request 的數量。

問題來了,這隻 merge_index 會在瀏覽器訪問頁面時檢查是否存在 /public/stylesheets 資料夾,如果不存在就先產生它,因此在 production 環境的目錄內你會找到 merge_index.css 這個 development 環境沒有、也不在 repository 內的檔案。

以上的狀況,當你只有一台伺服器時,一切都正常;當有多台伺服器時,就會發生瀏覽器問到還沒產生 merge_index.css  的伺服器,因而吃不到 css 造成脫衣服的問題。

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

update: 2011/08/31

Rails 3.1.0 釋出後,迅速的在 Guide 網站補上 Asset Pipeline 教學!

http://guides.rubyonrails.org/asset_pipeline.html

文章內教學的非常清楚,但我還沒空嘗試,因此僅留下 link 記錄。

http://blog.envylabs.com/2011/08/using-the-asset-pipeline-outside-of-rails-serving-and-running-coffeescript-2/

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

css3buttons_rails_helpers gem 是幫助你將網站套上精美的 github style button 。

https://github.com/thetron/css3buttons_rails_helpers

注意 3.0.x 只能使用 0.9.5 版, 3.1 之後就沒有問題可以使用最新版本,因此要記得在 3.0.x 時使用

gem 'css3buttons', '0.9.5'

裝好之後需要跑 generator ,所以請下

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

記錄幾個好用的 tmbundle ,可以幫助整理 coding style 。

首先是小技巧,要設定 TextMate 使用 tab 時的對應字元,就在視窗的最下方,有個顯示 Soft Tabs: 2 或是 Tab Size: 4

我的團隊是使用 space 2 做為 indent ,所以是設定 Soft Tabs: 2 。

其次是,常常會發現有些檔案拉下來排版亂掉,可能是來自美術,或是手誤沒排好等等,可以裝 code-beautifier.tmbundle

操作方法是按 alt+cmd+b 你就會看到亂掉的程式碼,被重新整理好 indent 啦!

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

在 rails 的專案內設定 .gitignore ,忽略掉 config/database.yml ,但是卻一直出現在 changed status 上。

這問題以前遇過一次,但是忘了記錄下怎麼解決,這次來寫解法。

reference:
http://stackoverflow.com/questions/3296739/git-not-ignoring-certain-xcode-files-in-gitignore

這種狀況是,之前有不小心把該檔案 commit 進 repo ,所以無法忽略,要下

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

上班一年多了,最近一次的大型專案開發在 6/1 上線,來利用這篇文章反省加檢討我參與過的專案管理與開發時程問題。

先講很失敗的第一次,因為對當時的實力掌握太差,所以最後大受打擊無疾而終。

處理的專案是廣告系統的後台,需要改寫並新增功能,但我想完 model ,寫完 CRUD 之後就停滯了。

  • 原因1:當時的我,對於基本網站架構還不夠熟悉,在規劃 CMS 上也不夠清楚,因此上稿的部份寫完,與前台接軌就卡住了。

  • 原因2:寫完那些 CRUD 之後,因為我同時還要顧及美妝的專案,每個月固定都要寫 event ,雙管齊下當時的我無法吃下來。

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

本篇的作法是我參考了文末的 reference 後融合而成。

在 app/controllers/application_controller.rb ,首先在最前面加上

unless Rails.env == 'development'
  rescue_from Exception, :with => :render_500 
  rescue_from RuntimeError, :with => :render_500

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

舉例一個很常見的狀況,如果要找匿名文章的話,會下

@posts = Post.where("user_id IS NULL")

這可以等義於以下這種寫法,而且也比較推薦這樣寫,因為是使用 ruby 的格式而不像是 sql command 的格式。

@posts = Post.where(:user_id => nil)

但是,如果要找的是排除匿名使用者的所有文章呢? 會用到 sql 的 NOT NULL

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

2011/06/06更新: 後來看到有 whitespace-tmbundle ,裝完之後只要 cmd+s 就會自動清除行末空白以及將 tab 換成 space 。

whitespace-tmbundle

===

用 textmate 的話,可以開 Find in Project (熱鍵: shift+cmd+f)

先把 Regular expression 這個選項打勾,再到 Find 的欄位輸入 [ \t]+$ ,Replace 欄位保持空白。

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

1 2 3 4 5
Blog Stats
⚠️

成人內容提醒

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

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