Rails country_select 事件懶人包

因為這件事我從頭跟到尾,我想我來報告一下最新的處理結果吧(是的!還有笨蛋在追蹤這個問題,而不只是又一個”某某機構把 Taiwan 改成 Taiwan, Province of China”的新聞而已)。

從 Rails 2.2 起,將不會內建 country_helper,也不會建議/提供預設的 plugin。edge Rails 即日起的 deprecation 訊息會警告您 “country_select will be removed from 2.2.0. www.rubyonrails.org/deprecation/list-of-countries has more information.” (見此commit)。在這個說明頁上面也沒有名字叫做 country_helper 的官方 plugin,而是會列出幾種相容的方案:原來 Rails 的 country_helper 被改名為更明顯的 iso_3166_country_select,另外還有我根據 IBM Globalization guideline 修改成的 country_and_region_select plugin (請支持)。

其實這件事( Country Select Helper 改使用 ISO 3166 )去年(2007/10/15)就 commit 進去了,當時的 Ticket 為了避免之後再更動列表,決定根據 ISO 3166 不再接受更動(雖然有意識到 Taiwan 這個問題,但是當時並沒有人抗議)。後來陸陸續續也有人零星丟出這個問題,不過都被 NZKoz 拒絕接受變更,直到最近:

因為我有訂閱 GitHub 的 Rails feed,所以我在 2008/9/18 看到第一篇 jamis 留言 之後,我就想說是個好機會再度提起此事,於是在 IRC 上找人幫忙聲援,再加上 twitter 上的朋友,一時間抗議聲熱鬧非凡。因為 NZKoz 早有將 country_select helper 移出成為 plugin 的想法,於是很快的就有了回應動作,不過即使如此,拆出來的官方 Rails “country_select” plugin 還是直接採用 ISO 3166 列表,並且在 deprecation 訊息也直接建議升級 Rails 2.2 之後改裝那個 plugin,這等於只是把問題從 core 移到 plugin 罷了。期間我也 fork 了這個官方的 plugin (參考了 isocodes package,debian 的作法是針對 Taiwan 多加上 common_name attribute ),並發出 request 給 NZKoz,但是還是一樣碰釘子,NZKoz 非常堅持不要更動列表,Rails core team 不會 maintain 一份自己特有的國家列表,以免開了一個Taiwan特例,之後還會有別的國家也會要求修改,會沒完沒了。

到這裡已經卡關了,github 上面也已經不准許任何人留言討論(大概也很難有結論)。文筆佳的 yllanhlb 先後寫了一篇英文 Blog 來表達我們的抗議,我也根據 lukhnos 的意見重新建了 country_and_region_select plugin,還把這個 plugin 跟 hlb 的文章(無恥地?絕望地?)貼到 RubyFlow 去看能不能有點效果。

Anyway,正當萬念俱灰(?),準備改行去寫 Merb 時(?),NZKoz 看到了 hlb’s blog,並在他自己的 blog 上貼了一篇善意的文章,提供了幾個選項,於是我和 hlb、gugod 討論之後,提出了照 IBM Globalization guideline 是最簡單的作法,不過以 framework 來說,沒有任何預設列表也許也是不錯的解套方式。NZKoz 比較喜歡我們後者的建議,後來也直接寫 E-mail 通知我們他最後的作法,Rails core team 是真的非常希望他們在這件事情上保持中立立場。

這件事一路 follow 到尾,心理壓力倒是不小,而且我也沒有很想管這件麻煩事啊(我很早就沒用 country_select helper 了,都自己建 country Model 處理 :p),只是有以上這幾位關心這件事的朋友幫忙發聲/出主意,加上 NZKoz 的主動來信,才有了更進一步的改善,希望這樣的結果還算是讓大家(Taiwan Rails community?)可以接受。

2 thoughts on “Rails country_select 事件懶人包

Leave a Reply