ruby

A collection of 10 posts
ruby

有關 Bundler 的二三事

今天聽 Ruby Rouges podcast #045, 學了一些之前不懂的 bundler 小知識. Dependency management 問題是 NP-Complete Bundler,或任何 dependency management 軟件的算法,也是 NP-Complete 的問題。 Bundler 的工作其實是在所有 dependencies 的版本上搜尋能符合 Gemfile 內容的解。大部份情況 bundler 也可以很快找到答案,但有一些 Gemfile 會讓 bundler 停轉。雖然看上去像 bug,但實際上不是個 bundler 作者可以輕易解決的問題。 話雖如此,但其實有方法加快 bundler 的搜尋:在 Gemfile 的 dependencies 盡量指定你想要的版本。 例如這個 Gemfile
3 min read
ruby

用 Vagrant 快速建立開發環境

這次要談談如何建立開發環境。 理想的開發環境 如果你曾經做過一些十人以上、持續一年以上的專案,你就會知道開發環境的重要性。我以前就待過一個專案:專案有 J2EE Server、RDBMS 還有外部的 legacy 系統。雖然開始時很好地設定了 Development、UAT 和 Production 環境,但經歷漫長的開發和改版,Development 環境的資料總是爛的: * 一些被改動到不合 constraint 的資料 * 一些設定是錯誤的 * 有時缺少了重要的 Data * 沒有運行的 server 或 backend job * 開發者的錯誤會讓 DB 或 Apps 全爛了,整隊人得花一天以上等待修復。。。 在開發的時候,我們需要的是一個快速建立、可以重現、一步到位而且每個開發者獨立的開發環境。這時候 Vagrant 就可以幫到我們了。 30 秒內學會使用 Vagrant Vagrant
4 min read
ruby

在 cron job 裡用 rvm

rvm 解決了 server 上有不同版本的 ruby 和 gems 的問題。 但如果後台要行 cron job ,怎樣才能使用 rvm 呢?直接在 cron 裡用 rvm 是不行的。 這其實是個很基本的 cron use case (雖然每隔一段時間我就會忘記...),答案是在 cron 裡開一個新的 bash : * * * * * /bin/bash -l -c 'cd /var/production/project/current; bundle exec rake cron' > /var/production/project/shared/log/cron.log 2>&1
1 min read
ruby

正確在 XCode 4 上使用 MacRuby + RubyGems

昨天突然有個 idea 想做成 app ,拉起 MacRuby 和 XCode 寫起來。 最近版本的 MacRuby 跟 XCode 的整合已相當不錯,基本上安裝好後就可以用了,然而我還是遇上了一個 gem 的問題: /Users/siuying/Library/Developer/Xcode/DerivedData/OOOO-dduzvbnelkxkfwbejosjlbcndmpk/Build/Products/Debug/OOOO.app/Contents/Resources/Controller.rb:10:in `
': no such file to load -- rdiscount (LoadError) XCode 找不到我的 rdiscount gem。當然,
1 min read