PIYO - Tech & Life -

Rails

RailsアプリをHeroku→さくらVPSに移行

Herokuのプランが変わったのでRailsアプリケーションをさくらに移行した。 ここ最近Herokuの料金体系が変わってFree Dynoは18時間までしか動かせないようになったらしい。それにともなってこんなHackをする人まで出てきているようで、Freeでとりあえず動かしたいという人たちに与える影響はそれなりにあるように思える。

ActiveRecordの日付カラムでレコードを絞り込める by_star gem

久々に便利なの見つけた。有名だったりするのかな? radar/by_star by_starはモデルの絞り込みに使えるgemで、ActiveRecordとMongoidで使える。 ある期間内のレコードだけを表示したり集計を取ったりというときに使える。自分でも大したコードにはならないんだけど汎用的なものなのでこのgemを使うのが良いでしょう。

Grapeで独自のレスポンスヘッダーを追加する

先日こんなエントリーを書いた。 Grapeを使ったAPIで独自のエラーコードも一緒に返す工夫 - ぴよログ その後色々調べているうちに、エラーコードはレスポンスヘッダーに入れたらいいよ~という話を見かけたので、その方針を採るかどうかは別として実現方法を調べてみた。

Grapeを使ったAPIで独自のエラーコードも一緒に返す工夫

RailsでGrapeをっていうgemを使うとちょちょいっとAPIが作れるという話は以前にも書いた。 RailsのGrapeとJbuilderでAPI開発 - ぴよログ Grapeを使ったAPI実装でのネストやパラメータ - ぴよログ このときはお試しだったんだけど、今回ちょっと本格的に書くかもという感じになってちゃんとエラー処理とかもしないといけなくなった。それにあたり試行錯誤したことをちょっと …

ActionViewのdom_id便利そう

RailsアプリでJSでデータを書き換えたあとでHTMLを更新するってことはよくあって、そのときはだいたいidを使うと思う。そしてidにはモデル名とモデルのidをそのまま使うことが多いはず。 <li id="item-192">...</li> このようなidを書くとき今までは自分でベタ書きしてしまっていたが、ActionViewにはdom_idというヘルパ …

form_forのf.selectのhtml_options

Railsのフォームで使うform_for。レイアウト調整のために各種コントロールにもclassを設定しているのに、あるフォームのドロップダウンリストにスタイルが適用されていないことに気がついた。なんだろうと思ってリファレンスを見てみると、f.selectのシグネチャはこんなんだった。

CarrierWaveでアップロードした画像のファイル名を日時にすると困る

CarrierWaveというgemを使うとRailsアプリケーションに画像アップロード系の機能を割と楽に実装できる。 アップロード先はサーバーローカルだけでなく、AmazonS3やGoogleなどのクラウド系のストレージにも対応しているし、アップロード時にリサイズ画像を用意したりファイル名を変更したりと色々なカスタマイズができるため、画像アップロード系は大体このgemだけでカバーできるというすぐれ …

Railsである時点でのモデルのスナップショットのためにpaper_trailでのバージョニングを行う

RailsでA、Bというモデルがあるとする。モデルAはモデルBを参照しているが、参照しているモデルBはある瞬間のスナップショットにしたいとする。つまり、モデルAが欲しいのは関連を作ったときのモデルBの情報で、それ以降に変更が加わって新しくなったものではないということだ。

Railsのrenderでdefined?による分岐

Railsでrender partialでいろいろなViewが使いまわしているViewがあるとき。ある1つのViewのときだけ見た目をちょっと変えるってことをやろうとしたときに、defined?を使うと便利かもなーというお話。