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 のリリースをした。
今日はここまで。