2014-07-01から1ヶ月間の記事一覧

Heroku でマルチテナントな Rails アプリを実現する

はじめに Web アプリでマルチテナントをやる場合、 すべてのテーブルに tenant_id を追加してデータを分けるのではなく、 テナントごとにデータベースを分けたい。 データベースを分けておけば、バグで他のテナントのデータまで変更してしまう可能性を減らせ…

死にたくないのでエチケットカッターを買った

Wikipedia によると、鼻毛を抜くと死ぬ可能性があるらしい。 鼻毛は脳に近い場所にあるため、鼻毛を抜くと毛根が黴菌により炎症し化膿、脳に影響が及んで死亡する場合がある 死因が「鼻毛を抜いたから」というのは勘弁。エチケットカッターを買うことにした…

Rails のベストプラクティスに従っているかチェックするために rails_best_practices を導入

Rails の使い方が間違っていないかどうかを、人が目視でチェックするのは、 無駄ではないけど時間がもったいない。 もしツールでチェックできるとしたら、ツールでやった方がいい。 設計とか、他にもっとレビューするべきところはあるのだから。 そこで rail…

Vim で ^M を一括削除

Vim

Rails でジェネレーターを実行したら、ファイルの末尾に余分な改行コード ^M が追加されてしまったので、Vim でまとめて削除する方法をメモしとく。 コマンドモードに切り替えて :%s/^M//g を実行すればいい。 なお、^M は Ctrl-V Ctrl-M を押して入力する。

牛亭

肉が食べたい気分だったので、 六本松駅から歩いて15分、大濠公園すぐ側にある『牛亭』に行ってみた。 この店は人気らしく、ランチは予約しないとすぐ満席になってしまうみたい。 そうとも知らず予約なしで行ったら、運よくカウンター席が開いていた。 危な…

Grape で API を複数ファイルに分けて定義する

Grape では 1 ファイルに API をずらっと書けるけど、 規模が大きくなってくると見通しが悪くなるので、複数ファイルに分割したくなる。 Grape では API が他の API をマウントできるので、 その機能を使ってリソースごとにファイルを分割できる。 以下、サ…

gem をオフラインでインストールする方法

あらかじめ Web に繋がったマシンで .gem ファイルをダウンロードしておけば gem install --local <gem ファイル名> でインストールできる。 ただし、依存する gem がインストールされていないと失敗するから、それらをすべて手動でインストールする必要があるため苦行。 Rai</gem>…

paranoia を使った論理削除でコールバックを実行しない

paranoia を使った論理削除では、destroy したとき deleted_at が設定されるだけでなく、コールバックも実行される。 そのため class User < ActiveRecord::Base acts_as_paranoid has_many :items, dependent: :destroy end 上記の User で destroy を実行…