おもしろwebサービス開発日記

Ruby や Rails を中心に、web技術について書いています

railsにおけるformatの取り扱いについて

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の話をした

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

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

パーフェクトRuby on Rails の epub版、kindle版がでます

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

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

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

デザインビギナーズの取材記事が掲載された

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

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

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

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

heroku 用の DNS を PointDNS に変更した

heroku はデフォルトでは naked domain (サブドメインがないドメイン)は使えません。おそらく EC2 の制約?のはず。DNS によっては抜け道があるのですが、route53 では回避ができません。

route53 だと、現状では「naked domain にアクセスしたら www のサブドメインにリダイレクトする」という設定をするのが精一杯です。

僕は基本 route53 を利用していて、そのため heroku で運用しているこのブログも一時 www.willnet.in というドメインにしていました。しかしやっぱり naked domain が使いたいな−。と思ったのでやり方を調べました。

PointDNS

結論として、PointDNS というサービスを使うことにしました。

  • heroku の addon として提供されていること
  • heroku で naked domain が使えること
  • 基本無料で使えること

が利用することになった決め手です。無料の範囲内だと1ドメインにつき10レコードまで登録できます。しかしデフォルトでSOAレコード×1、NSレコード×4が登録済みなので、実質登録できるのは5レコードです。この範囲で問題ないのであればとてもよい選択肢なのではないかと思います。

その他

Gehirn という DNS もあるみたいですねー。どれが一番いいんだろう。route53 が naked domain に対応してくれると一元化できて楽なのですが…。

この際、herokuアプリのDNSはGehirn DNSを使おう - komagata

RubyHiroba 2014 で飛び入りLTした

RubyHiroba 2014 にて、pronto という、Hound っぽいことができる gem の紹介をしました。Hound って何?という方はこちらのエントリを参考のこと。

HoundCIでリポジトリに番犬を飼おう - blog.takuyan.com

pronto はとてもよい gem なのでブログにかかなきゃなー…と思いつつ、忙しくてなかなか書けない日が続いていました。そんな折、RubyHiroba で飛び入りLTができることを知り、その勢いで資料を作ることに。

pronto を使うことで、継続して使い続けるのが難しい静的解析ツールを、継続して使える環境が手に入るはず。ただ、ドキュメントが少ないのと、一部の設定が面倒だったりします。そんな設定を助けるために prid という gem も作成しました。こちらも合わせてご利用ください。

ゆるふわ Development Club というサークルができた

僕は個人でコツコツとwebサービスを作っているのですが、実際はチームで開発するほうが好きです。GitHub 上でミサワや寿司ゆきを貼ったり、チャットで機能の相談をしたり、雑談したりしながら開発を進める。やったことがある人なら、きっとその楽しさを理解してもらえるのではないでしょうか。

当たり前ですが、個人で開発するとなるとそうはいきません。チームで開発する楽しさを覚えてしまうと個人の開発は味気なくて物足りないです。

モチベーションの維持も課題です。納期や他者の目がないと、際限なく脇道にそれることができてしまいます。一人だとなかなか開発が進まない…><。

個人だけどチームっぽく楽しく開発を進めたい。

そこでポエムに、「僕みたいに個人で開発をしている人たちを集めたら、チームっぽい開発ができるのでは?」という内容を書いたところ、色々あってサークルが出来ました。

ゆるふわ Development Club #ydclub

詳しくはリンク先を参照のこと。何か作ってる人たちで集まってワイワイ開発しましょうというサークルです。メインの活動は idobata や GitHub 上で。月に2回のミートアップも予定しています。

みんなで楽しく開発したい!という方の参加をお待ちしていますー