ActiveRecord のカウンタキャッシュはどのように設定されるのか


「Rails3レシピブック」を読んでいて、「カウンタキャッシュ」の設定方法が出てきた。 このように、モデルの関連において参照元で belongs_to に :counter_cache => true というパラメータを与えると、そのモデルのコールバックで参照先のカウンター用カラム (entries_count) が自動的に増加/減少するというもの。 「Rails3レシピブック」では、上記の...

READ MORE >>

Phoenix でバージョニングした REST API を構築する


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

READ MORE >>

Volt を使って10分でリアルタイムチャットアプリケーションを作るチュートリアル


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

READ MORE >>

Rails エンジンの設定を外からできるようにしたい


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

READ MORE >>

Mac で gzip 圧縮されたテキストファイルを直接読む方法


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

READ MORE >>

Rails で raw HTML を sanitize する


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

READ MORE >>

(翻訳) Ruby 2.2 のシンボル GC


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

READ MORE >>

Rails 4.2 を PostgreSQL を使って Elastic Beanstalk にセットアップする (1)


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

READ MORE >>