24. locale の修正と DatabaseRewinder

locale 機能の修正

昨日書いた locale について、別のシステムを作っていたときに楽に書けていたことに気づいた。別のシステムではページのタイトルを以下のように記述していた。

%h1= t '.title'

これは、view の中でパスを省略すると、view のパスが自動的に補完される機能によるものである。app/views/teacher/years/index.html.haml であれば、ja.teacher.years.index.title となる。昨日の例では views というパスを入れてしまったこと、teacher_years と「_」を使ってしまったため、このような表記ができなかったのであった。ということで、config/locales/views/titles/ja.yml を以下の様に修正した(title だけは今後もこのファイルにまとめることにした)。

ja:
  teacher:
    kyoumus:
      index:
        title: 教務室トップページ
    years:
      index:
        title: 年度変更

パスの修正を行ったので、title_from_path から views を外し、_ の代わりに「.」に置き換えた。また、page_title メソッドは消した。

  # @param [String] URL
  # @return [String] タイトル
  def title_from_path(path)
    path = Rails.application.routes.recognize_path(path)
    c, a = path.values_at(:controller, :action)
    value = t([ c.gsub('/', '.'), a, 'title' ].join('.'))
  end
  helper_method :title_from_path

各ページのタイトル部も以下の様に修正した。

- content_for :title do
  = @title = t '.title'
database_rewinder の設定と 3.0.1 のリリース

Gemfile に database_cleaner のインストールを記述していたが、設定をしていなかった。調べたところ、Ruby 2.0 以降であれば、database_rewinder の方が高速であるとの記載があったので、Gemfile を差し替えた。

group :test do
  (中略)
  gem 'database_rewinder', '~> 0.4.1'
end

bundle でインストールした。

spec/rails_helper.rb に DatabaseRewinder の設定を追記した。

  config.before :suite do
    DatabaseRewinder.clean_all
    # or
    # DatabaseRewinder.clean_with :any_arg_that_would_be_actually_ignored_anyway
  end

  config.after :each do
    DatabaseRewinder.clean
  end

一通りの受入テストが終わり一段落ということで、3.0.1 のリリースをした。

今日はここまで。