12/26/2008

File_Column 在 Rails 2.2 遇到問題以及解法

這裡找到的解法,File_column 在升級 Rails 2.2 會遇到問題

uninitialized constant FileColumn::ClassMethods::Inflector 


解決方式就是找到 vender/plugins/file_column/lib/file_column.rb 的 619行

my_options = FileColumn::init_options(options,   
Inflector.underscore(self.name).to_s,
attr.to_s)


改成

my_options = FileColumn::init_options(options,
ActiveSupport::Inflector.underscore(self.name).to_s,
attr.to_s)


即可。主要原因是 Rails Core 漸漸有 Namespace 概念(不是本來就要有了嗎XD),所以之前可以 work 的 plugin code 現在都要修改成比較好的寫法。

12/24/2008

金剛合體:Merb 將要 merge 到 Rails 3

我以為 Rails 2.2 已經很有創意了,弄出很多新東西(or 應該做的東西) ,Rails 3 到底要做啥東西才能夠讓人家驚訝了呢?噹噹,我發現到 Rails 還是嚇到我了 。

Big news 就是 Merb 跟 Rails 3 預計在 2009 的 Rails conf Merge 起來,Merb 作者 wycats( Yehuda Katz)會加入 Rails Team。請注意,我知道很瘋狂,不過這個消息已經經過 Rails And Merb 雙方證實了。

DHH 指出這次的 Merge 有幾點工作要做

  1. Rails core:Rails 是一個 full stack framework ,不過他要參考 merb ,讓人很簡單的做出 rails myapp–core 和 rails myapp—flat
  2. 效能強化
  3. Framework 解構:雖然 Rails 預設依舊是 ActiveRecord 當 ORM,不過你也可以選擇 data mapper,Sequel,Template 可以選擇 HAML,AJAX 可以選擇 jquery
  4. Rigorous API:反正就是要解決 Rails 一升級 plugin 就炸掉的問題

怎麼看起來像是又生出一個 Merb ?

我來猜猜,DHH 認為 Merb 社群長久以來的堅持是對的,而 Rails 社群漸漸走錯路, DHH 眉頭一皺,認為案情並不單純,利用自己還很龐大的力量吃掉 Merb ,然後順便導正 Rails 該走的路。

It is not good news , and it is also not bad news,It's AMAZING news。


12/22/2008

Ruby Memory Leak 巨大問題以及解決方式

Ruby Memory Leak 一向是一個難以解決的議題,不過在今年 11月12日的 Mailing List 裡面有人提出一個重要的問題, Ruby 的 callcc 在使用中產生相當明顯的 Memory Leak。後來有高手 Brent Roman 發表他的發現。他原本再 ARM CPU 上面開發他的 Ruby Robot 程式(Ruby 1.6.8),他的機器人上面只有 32 MB 的 Memory,不過他的 Ruby 程式一天就會吃掉 20MB 的 Memory,經過他的 hack ,現在他的 Ruby 程式已經穩定在 10MB 以下,他發現 Ruby Memory Leak 很大部分在於 pointer ,跟 callcc 的使用上,Javaeye 上面有對於這個問題的詳細中文翻譯


Matz 知道之後,相當鼓勵 Brent 將他的 Patch 放到 Ruby 上面,如今他的 Patch 終於發佈,他是根據 Ruby 1.8.7-p72 做的 Patch ,又由於他在 Monterey Bay Aquarium Research Institute工作,所以叫做 1.8.7-p72 MBARI Patch,目前處於 Alpha 版本。他發現經過他的 hack 之後,對於 Memory Leak 上有相當大的解決。根據他的用 Ruby 預設的 Test Case 的結果,他發現 Memory 消耗從 97MB 降低到 57 MB,JavaEye 也利用他們的程式做測試,Javeeye Fcgi Memory 消耗量從 129MB 降低為 99MB。


相當不錯的結果,期待納入 Ruby 1.8.7 的那一天。


12/16/2008

Rails 2.2 在 Windows 上面有關 mysql Gem 的問題

今天要幫公司同事灌 Windows 上面 Rails ,發現安裝 mysql gem 出了點問題 ,本來是不用管,直接使用 Rails 附帶的 Mysql, 不過自從 Rails 2.2 之後,Rails 原本附帶的 mysql adaptor 已經移除掉adaptor,所以被迫得安裝 MySQL Gem 。

The bundled mysql.rb driver has been removed from rails 2.2. Please
install the mysql gem and try again: gem install mysql."
當我 gem i mysql,本來是沒問題的,不過現在不知道 gemspec 那裡改壞了,導致出現問題
Installing ri documentation for mysql-2.7.3-x86-mswin32...
Installing RDoc documentation for mysql-2.7.3-x86-mswin32...
ERROR: While generating documentation for mysql-2.7.3-x86-mswin32
... MESSAGE: Unhandled special: Special: type=17, text=""
... RDOC args: --op
所以第一個問題解法就是不搞 RDOC,直接使用 gem i mysql --no-ri --no-rdoc 安裝

當我以為已經解決的時候,沒想到出現第二個 Error
This error occurred while loading the following files: mysql
靠,Rails 2.2 + Windows 還真多災多難,解決方式根據這裡,裡面說到要把 MySQL 帶的 libmysql.dll 複製一份過去到 ruby\bin 底下
copy mysql\bin\dll\libmysql.dll ruby\bin\
我使用的是 Instant Rails ,所以 MySQL 跟 Ruby 都放在同一個資料夾下面,如果安裝方式不同請自行處理。