簡単な API サーバーを作る必要があったので、Elixir の WAF である Phoenix を使ってみました。API バージョンでスコープを分けた RESTful API 構成にしようとしたのですが、なんだか結構ハマってしまったので簡単な手順を残します。 title と completed という2つのフィールドを持つ todo という単純なリソースを例とします。 アプリケーションの作成 p......

これからも Volt 推しでいきます。 「Volt を試してみたいけど、例やチュートリアルが少ない」という意見をしばしば聞きます。確かに、公式ドキュメントのチュートリアルはホントに触りだけで、モデルすらほとんど出てこない内容です。 そこで、モデル側の実装やユーザー機構にも少し触れることができる「Volt を使って10分でリアルタイムチャットアプリケーションを作る」というチュートリアルを公開します。......

Rails の scaffold やらで作ってくれるビューに「Destroy」リンクありますよね。あれ、削除の確認のために JavaScript で Confirm のモーダルダイアログまで出してくれてなかなか親切なヤツなんですけど、せっかくだから見映えももうちょっといい感じにしたい。 ついでに、Github でリポジトリを消すときとかのように、誤って削除することがないようにユーザーに対して入力も......

作っている Rails エンジンの設定を外からやりたくて、どうやるのがいいのかな?と調べてみました。要は、エンジンの挙動をコントロールするための変数なりをエンジンに用意しておいて、マウントする側の親アプリケーションから値を設定したいということですね。 RailsGuides に書いてある方法 RailsGuides のエンジンチュートリアルで紹介されているのは、エンジンのモジュールに mattr_......

Mac のシスログを読もうとしたら gzip で圧縮されてて、その内容を読みたかったときの話です。 最近の Linux だったら less とか zcat とかでそのまま *.gz を余裕で読めちゃうし、そもそも Mac で圧縮されたログファイルを読みたかったことが今まで一度もなかったようで困ってしまいました。 結論 zless、gzcat を使う。以上。 ほんとに知りませんでした。今まで偉そうに......

Heroku の推奨する Ruby Web サーバーが Puma に変更になったとのアナウンスがありました。 Puma is Now the Recommended Ruby Webserver もともと、何となく「1 Dyno で動かすなら Unicorn より Puma の方がいいんじゃないのかな?」とか思って Puma を好んでいました (ただ、ぶっちゃけロクに調べておらず、この考えはたぶん......

ブログのようなアプリケーションを作ろうとしていて、フォームのテキストエリアをリッチテキストエディタ化するために tinymce-rails を使おうとしています。当然そこで入力した内容は HTML になるので、表示するときには html_safe などでエスケープされないようにしないといけません。 が、やっぱり raw html をそのまま出すのは怖いので SanitizeHelper の san......

Ruby 2.2 の新機能にシンボル GC というものがあります。 正直、「え、シンボルって GC されないから速いんじゃないの?なのにシンボル GC で Rails が速くなるとか話聞くけど、いったいどういうことなの?」という感じでサッパリ理解できてなかったのですが、その辺りの疑問に対してまとめられている記事がありました。 Symbol GC in Ruby 2.2 とても分かりやすく素晴らしい......

Rails 4.2 を PostgreSQL を使って Elastic Beanstalk にセットアップする (1) の続きです。 今回は DB の設定をしていきます。が、その前に SECRET_KEY_BASE 環境変数をセットします。 SECRET_KEY_BASE Rails はデフォルトでセッションの情報を「すべて」クライアントの Cookie に格納するため、それを暗号化するための秘密......

これまで Rails アプリケーションの公開は Heroku への楽ちんデプロイしかしたことがなかったので、AWS を使ってみることにしました。でもやっぱりサービスを自分で組み合わせて構築するのは大変そうだったので、結局、PaaS として使える Elastic Beanstalk を利用することにしました。 最終的には、ELB のロードバランシングと RDS のレプリケーションによる冗長化と、セッ......

Objective-C の Category にあたる機能は Swift では Extension として提供されています。 Objective-C の Category には、 UIViewController+CommonNavigationItem.h UIViewController+CommonNavigationItem.m のように、拡張したいクラス名+Category名 とつける......

プライベートリポジトリ用に建てている GitLab には、CloudFlare で SSL を有効にして https でアクセスしていますが、Ubuntu 14.04 から git pull しようとしたら、 gnutls_handshake() failed: Handshake failed とのエラーで失敗してしまいました。git clone も git push も全部失敗します。Clo......