一から勉強させてください

最下級エンジニアが日々の学びをアウトプットしていくだけのブログです

Rails

RailsのマイグレーションでPostgreSQLのCREATE INDEX CONCURRENTLYする

最近、PostgreSQL を使用している Rails プロジェクトでCREATE INDEX CONCURRENTLYする機会があったのでメモ。 CREATE INDEX CONCURRENTLY とは 通常のインデックス作成処理では、処理が完了するまで対象テーブルへの書き込みはロックされる(読み取りはロッ…

factory_botでactive_model_serializers用のPORO (Plain-Old Ruby Object)のテストデータを作成する

最近、DB の存在しない Rails プロジェクト下で API を作る機会がありました。 外部から fetch してきたデータから PORO (Plain-Old Ruby Object)を作って、 active_model_serializersでひたすらシリアライズしまくるみたいな感じです。 特にテストまわりで…

Railsでパンくずリストを実装するためにbreadcrumbs_on_railsを使ってみた

最近、Rails アプリでパンくずリストをいい感じに実装するために、breadcrumbs_on_railsという Gem を使用してみました。 すでにネット上に使ってみた的な記事はちらほら見受けられましたが、自分なりにどのように使ったかなどを書いておきたいと思います。 …

Grape + Rails4.2のAPI開発でエンドポイントとエンティティのテストについて考える

最近、Grape + Rails (v4.2.6)で REST な API を開発する機会があったのですが、今回はその開発の中で悩んだ、「Grape のエンドポイントとエンティティのテスト」について書きたいと思います。 前提として Grape ののエンティティは grape-entity、テストフ…

Railsでfakerのバージョンを上げたらspecが壊滅したけど設定で乗り越えたメモ

最近、Rails プロジェクト内で使用しているfakerのバージョンを最新(v1.4.3)に上げたら、今まで通っていた spec が壊滅したので、その際のメモです。 状況把握 こちらの記事に記述されているものと全く同じ状況に陥ったと思われます。 プロジェクト内の loca…

Rails4 + devise + paranoiaで論理削除を考慮したユーザーバリデーションを実現する

Rails でユーザー登録、認証機能を実装する際、deviseを使用することはわりと一般的かと思います。 またユーザーの論理削除を実現するための gem としてはparanoiaが有名かと思います。(Rails3 時代によく使われていた acts_as_paranoid をよりシンプルにし…

PowとtunnelsでRailsのローカル開発環境にSSL導入

仕事で Rails アプリのローカル開発環境に SSL 導入したのでメモ。 pow の導入 powは Rack アプリケーション用のサーバー。仮想的なドメイン名を割り当ててアクセスできるようにしてくれるぽい。 github のreadmeをみて導入。 $ curl get.pow.cx | sh $ cd ~…

Railsのbefore_validationで文字列の先頭、末尾にある全角スペースを取り除く

Strip#stripを使うだけでは半角スペースとか改行文字しか取り除けないので、before_validation時に全角スペースを取り除く方法を考える。 ちなみに Ruby は 2.1.2、Rails は 4.1.0 を前提に書いてます。 auto_strip_attributes の導入 auto_strip_attributes…

Rails4.1プロジェクトにteaspoon入れたらエラー出たので調査した

Rails4.1 のプロジェクトでJavaScriptのテストをするためにteaspoonを入れたらうまく動かなかったので調査。 Rails4.0 で入れたときは問題なかったのに…ツラい。 準備 まずはGemfileに記述して group :development, :test do #ここにrspec関連とか書いてる。…