Rails 4でcallback(before/after/around action)の実行順序おさらい
before_action(旧 before_filter)はchainで複数指定することができます。 before_actionを複数指定したりaround_actionと組み合わせたりした場合の実行順序について確認しておきましょう。 以下のようにWorksControllerを定義しました。 class WorksController < ApplicationController...
View ArticleRailsで検索を高速化するならこれで決まり!Sunspotで始めるSolr入門
Railsで簡単に使える全文検索と言えば、Sunspotが人気です。 非常に使いやすくできていて、わずか数ステップで本格的な全文検索を始めることができます。 バックエンドは信頼と実績のApache Solrなので、性能・信頼性・拡張性は折り紙付きです。...
View Article[Rails 4.0] ActiveRecordのコールバックが呼ばれる順番まとめ
ActiveRecordにはコールバックがたくさんあります。 実行順序がよくわからなくなるので、Rails 4が出たことだし改めてまとめてみました。 ※ActiveRecord::Callbacksのヘッダコメントに全部書いてあります 使うモデル まずは、このようなクラスを作りました。 class Work < ActiveRecord::Base callbacks = %w(before...
View ArticleActiveRecordの便利機能previous_changes
ActiveRecordには便利なprevious_changesというメソッドがあります。 割と知名度が低いので、ここで使い方をご紹介します。 (08/26追記) はてブでご指摘(?)頂きましたが、正確にはActiveRecordではなくActiveModel::Dirtyの機能です。 まずはchanges previous_changesの前に基本のchangesです。...
View ArticleDevise3.0.2 でRails4 対応についてREADME に少し騙された話
Rails で認証系のGem で人気があるものといえばDevise かと思うのですが、Rails4 対応で少しはまったのでメモ。なお予め断っておきますと、これは2013年8月28日現在での問題であり今後すぐに問題なくなるかと思います。 Rails4 からStrongParameters が導入されましたが、Devise も同じくStrongParameters...
View Article社内書籍管理システムを作ってみる その1
最近社内向けの書籍管理システムを空いた時間を見つけて開発したりしています。書籍の管理と言えばブクログさんとかが思い浮かぶと思います。おおよそ同じような機能が欲しくてちょっと再発明的な感じではありますが、そこに貸出機能が欲しかったり電子書籍端末等を扱いたいという社内の要望に細かく対応できることと、Ruby2.0 とRails4...
View Articleよくある?Rails失敗談 default_scope編
モデルからデータを取得する際に常に特定の検索条件を指定することができるdefault_scopeですが、 デメリットについてあまり注意を払わずに使ってしまって失敗しました。 サンプル事例 環境 Rails 3.2.12, 4.0 MySQL 5.1.65 ※ 実際に問題が起きたバージョンが3.2.12 なのでそちらが中心になっています。...
View ArticleRuby on Rails 3.2.15がリリースされました –変更点まとめ
本日(日本時間2013年10月17日)、Ruby on Rails 3.2.15がリリースされました。3.2系最新リリースになります。 バグ修正の他、1件のセキュリティFIXが含まれています。3.2系ユーザは可能な限り早めにアップデートしましょう。 なお、予定ではこれが3.2系最終リリースで、これ以降はセキュリティFIXのみが提供されることになっています。...
View ArticleRuby on Rails 4.0.1リリース!大量のバグ修正、3系からの移行も少し簡単になりました
本日、Ruby on Rails 4.0の最初のアップデートである、Rails 4.0.1がリリースされました。 6月に4.0がリリースされてから約4ヶ月、かなり久しぶりのアップデートとなりますが、どのような変更が含まれているのでしょうか。 まとめ 量が多いので最初にまとめです。 今回のリリースは大量のdiffを含みますが、そのほとんどは細かいバグ修正です。...
View Articleactive_support/core_extの変化を見る
Railsの便利さを支えるActiveSupport。特にcore_extは単体で使うことも多いと思います。 基本的な機能ながら、バージョンごとに地味に機能修正が行われているので、わかりやすいものを2個取り上げてみました。 3.2で挙動が変わったblank? blank?はご存じ、「空ならtrueを返す」便利メソッドです。 blank? オブジェクトが空ならtrueを、そうでなければfalseを返す...
View Article肥大化したActiveRecordモデルをリファクタリングする7つの方法(翻訳)
こんにちは、hachi8833です。今回は、自分が知りたかった、ActiveRecordモデルのリファクタリングに関する記事を翻訳いたしました。1年前の記事なのでRails 3が前提ですが、Rails 4でも基本的には変わらないと思います。リンクは可能なものについては日本語のものに置き換えています。...
View ArticleRails 4.0.2, 3.2.16リリース!重大なセキュリティFIXがあります
昨日、Ruby on Railsの重要なセキュリティアップデートである、Rails 4.0.2と3.2.16がリリースされました。 このリリースには、5件(3.2.16には4件)のセキュリティFIXが含まれています。 重要度の高いものがあるため、早急なアップデートをしましょう。 CVE-2013-6416 simple_formatヘルパーのXSS脆弱性に関する修正です。...
View Article【Rails】Prawnで縦書きを実現する
PrawnはRubyで使えるPDF生成ライブラリです。 Railsを使った案件でPDFを作成する場合は、よくPrawnを利用しています。 今回、縦書きに対応する必要があったのですが、Prawnが提供しているメソッドだけだと対応できないので、自作してみました。 基本的な考え方としては、「文字を1文字ずつ区切り縦に並べる」です。 後は自動改行や複数行になった際の中心の調整を対応していきます。...
View ArticleHaml で閉じタグに悪戦苦闘してRails を学んだお話
Rails を使い始めてからたまにテンプレートでHaml を使う機会があるのですが、先日下記HTML のようなものを書きたいと思いました。 <div class="hoge"> <div class="fuga">item1</div> <div class="fuga">item2</div> </div> <div...
View Articleちょっと待った! Railsでgitリポジトリから除外すべきでないファイル:Gemfile.lockとdb/schema.rb
こんにちは、hachi8833です。 Railsをgitで管理するのであれば、ログファイルや、パスワード入りdatabase.ymlなどの登録したくないファイルを.gitignoreに記載してリポジトリから除外するのが普通です。しかし実際の案件では、除外すべきでないファイルが除外されていることがたまにあります。言うまでもないような話ですが、心当たりのある方は念のためチェックしてみましょう。...
View ArticleUnicornがどれくらい仕事してるかさくっと調べる
Unicornのワーカー数を増やすべきか考えるために、今いくつのワーカーがリクエストを捌いているのかさくっと調べたいことがあると思います。 Passengerだとpassenger-statusコマンドが標準で付いていて便利なのですが、Unicornではそうもいきません。 今知りたい場合 たとえば以下のような1行コマンドで調べられます。 ps l --ppid=`cat...
View ArticleRailsのルーティングを極める(前編)
こんにちは、hachi8833です。今回も弊社CTOの馬場さんによる勉強会のスライドを元に記事を書きました。執筆当時はRails3だったので、Rails4情報も追加しました。 Rails routesを極めよう 2012/03 baba...
View ArticleRuby on Rails 3.2.17, 4.0.3がリリースされました!重要なDoS脆弱性が修正されています
日本時間で2/19の朝、Ruby on Rails 3.2.17, 4.0.3, 4.1.0beta2がリリースされました。 今回は、重要なセキュリティFixを含む一斉アップデートです。 なお、4.1についてはすでに4.1.0rc1がリリースされているので、そちらにアップデートしましょう。...
View Articleルーティングを極める (後編)
こんにちは、hachi8833です。「ルーティングを極める」の後編です。今回はRails 4.0.3 + Ruby 2.1.1の環境で動作確認しています。 (ルーティングを極める(前編)) Rails routesを極めよう 2012/03 baba resourcesとネスト...
View ArticleRails4でサイト構築をする – Rails環境構築編
[Rails4でサイト構築をする] – Rails環境構築編 – Scaffold利用編 – Bootstrap導入編 – WYSIWYG導入編 – CSV出力機能編 – スクレイピング機能編(nokogiri) – 非同期処理導入編(delayed_job) – デプロイ環境構築編(capistrano3) 上記を毎週1つずつ出す予定...
View Article