Category Archives: Rails

Nginx + SSL + HTTP/2 + Rails 在 Mac 本機開發設定

有一陣子 Rails 在本機開發流行 Pow,但是因為缺少維護問題多多,我個人是不太愛用。平常我也沒有需要一直開新專案,所以偏好自己在 Mac 上安裝 Nginx 做 reverse-proxy 導流,而且還可以把 HTTP/2 打開加快靜態檔案下載速度。

以下示範如何將 https://ihower.localhost 導流進 localhost:3001

1. 編輯 /etc/hosts

sudo vi /etc/hosts 加上

127.0.0.1       ihower.localhost

2. 產生自簽的 SSL key

以下指令參考自 https://localhost 這篇文章

cd; mkdir .ssl

openssl req -newkey rsa:2048 -x509 -nodes -keyout .ssl/ihower.key -new -out .ssl/ihower.crt -subj /CN=ihower.localhost -reqexts SAN -extensions SAN -config <(cat /System/Library/OpenSSL/openssl.cnf <(printf '[SAN]\nsubjectAltName=DNS:ihower.localhost')) -sha256 -days 3650

sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain .ssl/ihower.crt

這樣會產生 ihower.localhost 的 SSL key 放在 ~/.ssl/ 下,並且把這個 key 加入信任名單

3. 安裝和設定 Nginx

brew install nginx

編輯 /usr/local/etc/nginx/nginx.conf,新增一段:

server {
  listen 80;
  server_name ihower.localhost;
  root /Users/ihower/projects/ihower/public; # 你的 Rails 項目的 public 目錄

  listen 443 ssl http2; 
  ssl_certificate /Users/ihower/.ssl/ihower.crt;
  ssl_certificate_key /Users/ihower/.ssl/ihower.key;

  location / {
    proxy_pass http://localhost:3001;
    proxy_set_header  Host $host;
  }
}

重啟 Nginx

sudo brew services stop nginx
sudo brew services start nginx

4. 啟動 Rails 在 Port 3001

rails s -p 3001

打開瀏覽器就前往 https://ihower.localhost 就有 SSL 又有 HTTP/2 啦。

亞洲首次的 Ruby on Rails 年會 – Rails Pacific 大會 9/26-27

xdite 主辦的 Rails Pacific 年會即將於 9/26-27 展開,目前還在售票中。講師陣容很強大,看得出來是一場國際化導向的專業研討會,最近的技術研討會真是越來越專門啊。

小弟也受邀有一場 45 分鐘的演講,主題是 Exception Handling – Designing Robust Software 例外處理和強健的軟體設計。

In a perfect world, every method call succeeds, users enter correct data and resources are accessible always. But the real world is brutal and failures happen. You will be miserable if you fail to design your software for a production environment.

In this talk, I will explore how to design robust software, the exception handling mechanics of Ruby and Rails, bad smells and best practices of exception handling.

寫 Ruby on Rails 也好多年了,從初學到研究進階用法、從會動到寫的漂亮,最近比較多的痛苦體悟則是在 production 環境上的一堆鳥事考驗。希望這場 talk 可以分享一些 Ruby 例外處理的技巧和錯誤處理的策略,進而達到強健軟體的目的。

RubyConf Taiwan 2014 售票開始

今年的 RubyConf Taiwan 日期是 4/25-26,地點在陽明大學,目前已經開放報名啦!!

本屆 RubyConf Taiwan 的邀請講者有:Rails Girls 社群創辦人 Linda Liukas 和 Terence Lee,她們將一同上台分享Rails Girls社群創辦經驗;Ruby 之父松本行弘先生與 Ruby 核心開發者笹田耕一先生是第二次在 RubyConf Taiwan 進行演講,展現他們對 Ruby 社群在台灣發展盛況的贊許與支持;還有 JRuby 的主要開發者 Charles Nutter;另外,以良葛格之名廣為人知的 Java 及 Python 語言的教育專家林信良先生也將發表主題演講;更有來自國內外的諸多程式好手分享心得與發現。本屆會議的內容精采可期,不容錯過。

摘錄自新聞稿

RubyConf Taiwan 2012 籌辦祕辛與心得

這篇拖稿超久,堆在草稿大半年了,真是不好意思。跟往年 2010, 2011 一樣,還是要留個籌辦心得紀錄。聽眾版心得文可以看會後記錄

該怎麼描述這次的 RubyConf Taiwan 2012 呢,應該是超乎預期的成功吧。大體來說,除了 wifi 搞砸了之外,其他似乎都讓大家還蠻滿意的,特別是議程和食物 :)

Continue reading RubyConf Taiwan 2012 籌辦祕辛與心得

如何使用 pry 作為 Ruby debugger 進行除錯

很奇怪,ruby-debug 或是 ruby-debug19 常常有版本問題,甚至還有 fork 版本 debugger。都不知道哪個沒問題。

最近發現其實 pry gem 就可以作為 debugger 之用,本來還以為只是漂亮的 irb 取代品,沒想到功能這麼強大。作為 debugger 使用的方法很簡單,只要在程式裡加上:

binding.pry

這樣就會設下中斷點。例如在 rails console 或 rails server 中,就會停下來讓你可以進行檢查和除錯。

可是如果你有用 Rails 伺服器,例如 pow 或 passenger 的話,因為不在同一個 process,所以必須加裝 pry-remote gem。它利用 DRb 技巧讓另一個 process 可以亂入進行除錯,用法改成:

binging.remote_pry

接著在 command line 輸入 pry-remote 就可以進行除錯了。非常簡單好用。

其他 pry plugins 也可以裝一下,包括:1. pry-stack_explorer 輸入 show-stack 的話可以看到 call stack 2. pry-debugger 可以加上 step, next, finish 和 continue 的控制

RubyConf Taiwan 2012 CFP&CFS

To English readers:

Hi, I’m the organizer of RubyConf Taiwan. Please see Call For Presentations and Call For Sponsors for more information.

Our invited speaker this year includes Yukihiro Matsumoto (Ruby creator), Koichi Sasada (Ruby 1.9 VM YARV author), Akira Matsuda (kaminari author, Rails Contributor, Ruby core team), Koan-Sin Tan (famous open source developer in Taiwan).

今年的 RubyConf Taiwan 已經開始籌辦一陣子了,才想到自己部落格還沒有貼這則消息… XD 日期是 2012/12/7-8,跟去年一樣是週五周六,場地則改在天母會議中心

詳細的公告,請詳見 Ruby Taiwan 部落格的 Call For PresentationsCall For Sponsors。這週末就截止徵稿囉,要投要快。

大家期待的邀請講者部分,名單有:

* Yukihiro Matsumoto (matz): Ruby 程式語言發明人
* Koichi Sasada: Ruby 1.9 VM (YARV)的作者
* Akira Matsuda: kaminari 的作者、日本最活躍的 Rails Contributor、Ruby core team
* Koan-Sin Tan (Freedom): 台灣開放源碼社群的資深前輩,會來跟我們談跟 Ruby 淵源很深的 Smalltalk

最快九月底,最慢下個月就會開放報名,敬請期待。