昨日、第17回目の ginza.rb ミートアップを開催しました。

Ginza.rb 第17回 二本立て!Rackサーバ比較&Awesome Ruby - Ginza.rb | Doorkeeper

Rackサーバ比較

Rackサーバに関する記事をいくつか読んで感想を話していたら1時間あっという間にたってしまった感じです。@y_yagi さんが Engin Yard さんの記事にあったベンチマーク(関連記事を参照のこと)を表にまとめておいてくれたお陰で捗りました。所感をまとめると

  • Passenger 4 結構頑張っている
    • 有料版によい機能が多い
    • これが無料版にあれば…><
  • unicorn & nginx はやはり安定している
  • puma、早いしよさそうだけど unicorn や Passenger と比べると安定性に少し欠ける印象
    • あとMRIで使うのなんかもったいない感じ

あとはもうじき公開される予定の Raptor について。Raptor は Unicorn の 4 倍、puma の 2 倍早いとうたっている、現在最も注目を集めているサーバです。具体的にどんな感じなのかは関連記事を読んでもらうとして、すごくざっくりまとめると

  • nginx 的なフロントエンドのHTTPサーバと、unicorn 的なプロセスベースなアプリケーションサーバをまとめたもの
    • 有料版はスレッドベースも対応する予定
  • 速くするために機能を絞りまくっている
    • gzip 圧縮や静的ファイル配信は未サポート
  • いろいろチューニングがんばってる

と、こんな感じです。個人的にはスレッドベースのサーバはちょっと手を出しにくい気がしているので、プロセスベースで速い(らしい) Raptor にはとても期待しています。本当に速くてかつ安定しているのであれば、来年の今頃はみんな nginx + unicorn から Raptor に乗り換えている可能性もありますね。

バックエンドジョブ系の gem について

@y_yagi さんが、Rails 4.2 から導入される Active Jobs が対応している、バックエンドジョブ系の gem についてまとめてくれました。sidekiq や resque などの定番以外は尖った gem が多くて(postgres専用だったり、インメモリだったり)なかなかおもしろかったです。

資料はこちら。

Ruby_backend_jobs

次回

今年最後の ginza.rb ミートアップは、基本に立ち返ってソースコードリーディングで締めることになりました。spring を読む予定です。気になる方は Doorkeeperfacebookグループ に登録していただけると捗ると思います!

関連記事

respond_to についての以下の記事を読んだ。

respond_to without all the pain - Weissblog

詳しくは原文見て欲しいけど、用意していないフォーマットにアクセスされたときにどのように振る舞うかについて書かれている。

これまで、用意していないフォーマットにアクセスされた時は、僕は次のように、エラーページを強制的にhtmlフォーマットで表示するようにして対応していた(formats: [:html] がないと、リクエストされたフォーマットでエラーページを表示しようとして更にエラーになる)。

rescue_from Exception, with: :error500

def error500(e)
  render 'error500', status: 500, formats: [:html]
end

でもこれはちょっとおかしい。そもそこれは予想している挙動なので、ステータスコードは 500 ではない。かといって TemplateMissing を 406 などに紐付けるのもちょっとアレ(「あるべきテンプレートがない」という本来のケースを 406 にしてしまうケースがあり得る)。

なのでフォーマットを用意していないときに、ちゃんと UnknownFormat エラーにして、406 を返してあげるようにしたい。上のエントリでは、respond_toをコントローラレベルで使用することで解決すると書いてあった。しかし試してみるとうまく動かない。ソースコードをざっと見た感じ、コントローラレベルのrespond_torespond_withと一緒に使うもののようだ。アクションレベルのrespond_toは期待通り動いたけれど、すべてのアクションにrespond_toを書くのはダルい…。

よってここをきちんとやりたかったら、新しく gem を作ってやるしかないのでは…という気分になってる。けど面倒なのでだれか作ってくれるといいなあ。

…時間あったら作ります。

今日開催された渋谷Ruby会議で、コミュニティトークとして ginza.rb のこれまでの取り組みの紹介をさせていただきました。なんと30分の枠をもらっていたので、スライドの内容だけでは大幅に時間が余り、残りの時間で前回のginza.rbミートアップでやった「Rails 4.2 のリリースノート を読む」という内容を再演しました。参加された方には、大体どんな感じで ginza.rb が進んでいるかがわかってもらえたかと思います。

ginza.rb 、個人的にはとても面白いことばかりやっていると思うので、このスライドやDoorkeeperを見て気になった方はぜひぜひ一度ご参加いただけると嬉しいです!

kindle 版は今日から、epub 版は明日(11/1)から購入できるようです。これまで、紙なので購入をためらっていた方はどうぞこの機会にお買い求めくださいm(__)m

パーフェクトRuby on Rails | Gihyo Digital Publishing

パーフェクトRuby on Rails
技術評論社 (2014-10-31)
売り上げランキング: 487

僕が主催しているコミュニティの一つに、デザインビギナーズという、デザイン初心者たちが集まってデザインを勉強するものがあります。

そんなデザインビギナーズのミートアップに、Geekroid(仮) さんから取材が入りました。自分がやってる活動が、こんな形で外部に紹介されるなんて、なんか変な感じです。

デザインビギナーズってどんな感じでやってるのか気になる方は見てみてください。

「勉強会に行ってみた!」第7回「デザインビギナーズ」 | Geekroid(仮)