2014-01-01から1年間の記事一覧

Capybara + Poltergeist を使ってテストするための環境を Vagrant + Chef で構築

プライベートで開発に関わっている Rails アプリが完成に近づいてきたので、 Capybara と RSpec を使ってインテグレーションテストを書くことにした。 JavaScript で動きをつけたページもきちんとテストしたいので、 JavaScript ドライバに Poltergeist を選…

Pow をアンインストール

だいぶ前に、マルチテナントの Rails アプリをテストするために Pow を導入した。 rbenv で構築した Ruby 環境で Pow を使う - present 便利に使っていたけど、もう用済みになったのでアンインストール。 $ curl get.pow.cx/uninstall.sh | sh Pow は Mac 以…

環境や開発者ごとに異なる設定を記述するのに dotenv が便利だった

Rails アプリ開発中、メール送信機能をテストするには Gmail の SMTP サーバーを使うのが手っ取り早い。 その際、ActionMailer の設定に Gmail のアカウントとパスワードを書く必要があるけど、 開発者ごとに違うし、そもそもアカウントとパスワードをソース…

RubyMotion をアンインストール

Apple の新言語 Swift を使い始めていて、思いのほか書き心地が良かったので、 iOS アプリ開発は RubyMotion から Swift に移行することにした。 そこで、後戻りできないように、MacBook から RubyMotion をアンインストール。 sudo rm -rf /Library/RubyMot…

Rails 開発環境を構築するために Chef を使って PostgreSQL をインストールするメモ

Rails アプリの開発環境を Vagrant + Chef で構築していて、 PostgreSQL のインストールでつまづいたのでメモ。 まず Berkshelf で postgresql のクックブックをダウンロード。 echo cookbook "postgresql" >> Berksfile berks vendor cookbooks postgresql …

博多 一双

久しぶりにラーメン屋を新規開拓したくなったので、博多まで足を伸ばしてみた。 ターゲットは博多駅筑紫口から徒歩6分のところにある『博多 一双』。 入り口の券売機でラーメン(600円)とミニチャーハン(300円)の食券を購入。 兼虎のときも思ったけど、券売機…

Tiki

福岡市内の人気カレー店としてグルメ本ではおなじみの、 天神南にある『路地裏カレー Tiki』に行ってみた。 目印の看板。ここから古民家のわきを抜けて裏地に行くと こんなところに店が。看板無かったら絶対分からない。 入るまでは本当に Tiki かも疑わしか…

Devise でのパスワード変更を自前で実装する

パスワード変更機能を、Devise が提供するコントローラーを使わずに、自前で実装したいときのためのメモ。 現在のパスワード・新しいパスワード・新しいパスワード(確認用) を入力して変更する場合、 update_with_password を使う。 current_user.update_wit…

Pizzeria Farina

「地下鉄の渡辺通駅そばに美味しいピザの店がある」という情報を得たので、 食べログで探してみたところ、『Pizzeria Farina』がヒット。 家にあるグルメ本にも載っているから、ここに違いない。 さっそく行ってみた。 店先の黒板にランチメニューが書いてあ…

Draper と kaminari を一緒に使う

デフォルトの状態だと、kaminari が生やしたメソッドを Draper が delegate してくれない。 Draper::CollectionDecorator.delegate :current_page, :total_pages, :limit_value, :total_count を config/initializers/draper.rb あたりに書いておく必要があ…

kaminari で Bootstrap のテーマを使う

$ bin/rails generate kaminari:views bootstrap で Boostrap 用の kaminari のビューをダウンロードできる。 ただ、Bootstrap 2.0 のときのテーマなので、最新の 3.2 で使うには修正が必要。 app/views/kaminari/_pagenator.html.erb を次のように修正すれ…

Windows で自己署名証明書を作成するスクリプト

Windows Azure で SSL のテストをやりたいときに、自己署名証明書を作成することがたまにある。 自分の場合、自己署名証明書の作成には、Windows SDK で提供されている makecert コマンドと pvk2pfx コマンドを使っている。 ただ、作成するのは稀だし、毎回…

Devise でメールアドレスではなくユーザー名とパスワードでサインインできるようにする方法メモ

Devise ではメールアドレスとパスワードを使ってサインインするのがデフォルト。 メールアドレスではなくユーザー名、それとパスワードでサインインしたい場合はどうすればいいか? Devise が呼び出すモデルとコントローラーのメソッドを上書きするしかない…

Control + Space で Spotlight ではなく Alfred の検索フィールドを表示する方法

Mac

Control + Space は Spotlight の検索フィールドを表示するショートカットキーだけど、今は Alfred をメインに使っているから Alfred 表示したい。 違うショートカットキーを覚えるのはだるいので、Alfred が表示されるように設定してみた。MacBook を移行し…

スイートバジル

5年ぶりくらいに、大名にある『スイートバジル』に行ってきた。当日夕方に電話で予約。人気の店だから無理かもな〜って思っていたけど、以前行ったときよりもテーブルが増えていたため席がとれた。ラッキー。 まず最初に食べたのが『海老とアボガドのディッ…

ミルク&ハニー福岡の生いちごミルク

昨夏期間限定でイムズにオープンして盛況だったらしい「ミルク&ハニー」が、今年もオープンしていたみたいなので行ってみた。 お目当ては『生いちごミルク(690円)』。 氷はふわふわで口溶けがいい。 蜜は上質な苺ジャムのよう。 初めて食べるかき氷で、美味…

ghq でリポジトリを管理するなら peco は必須

Mac

ghq で管理しているローカルリポジトリに移動するのを楽にするために、peco を導入することにした。 peco/peco go get github.com/peco/peco/cmd/peco でインストール。 ghq list -p | peco で ghq で管理しているローカルリポジトリをインクリメンタルサー…

ghq を使ってローカルリポジトリのディレクトリ構成を Go 準拠に移行してみた

ローカルリポジトリを $HOME/Projects 直下にすべて置いていたけど、 それをやめて、ghq を使って Go の流儀で管理することにした。 ghq は go だけでなく、git と mercurial も必要としているので、 インストールしていなければ homebrew でインストールし…

兼虎

最近つけ麺にハマっているので、 赤坂にあるつけ麺屋『兼虎』に行ってみた。 『濃厚つけめん』と『辛辛つけめん』で悩んだけど、 初回なので『味玉濃厚つけめん(900円)』を選択。 麺は無料で中盛にできた。 魚介とトンコツの濃厚なつけ汁。 濃厚だけど、どこ…

Mac で MOV ファイルをアニメーション GIF に変換

Mac

iPhone で撮影した動画 (MOV ファイル)をアニメーション GIF に変換する Mac アプリを探したけど、 フリーで丁度良いのが見つからなかったので、ffmpeg と gifsicle を組み合わせることにした。 ffmpeg と gifsicle は Homebrew でインストールできる。 $ br…

西日本大濠花火大会

5年ぶりに大濠花火大会に行ってみた。会場で見る花火は、その迫力もさることながら、身体に振動が伝わってきて、沁みた。まるでアーティストのライブに行ったみたいだった。祭りはライブに限る。 これで終わればよかったんだけど、会場東側の道が超混雑して…

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 を実行…

Apartment を使った Rails アプリを Heroku にデプロイできない

マルチテナント用の gem である apartment を使っている Rails アプリを、 Heroku に push すると下記のエラーが発生した。 Preparing app for Rails asset pipeline Running: rake assets:precompile rake aborted! Gem::LoadError: Specified 'sqlite3' fo…