2022-05-30 Rails i18n のロケールファイル整理 / Ruby alias vs alias_method
Rails i18n のロケールファイル整理
下記の記述をすることで config/locales
ディレクトリ配下をモデル毎、ビュー毎に整理できる。
# config/application.rb
config.i18n.load_path += Dir[Rails.root.join('config', 'locales', '**', '*.{rb, yml}')]
こうすることで、モデル名とモデル属性名をビュー内部のテキストから分離し、そして日付・時刻フォーマットなどすべてをデフォルトから分離できます。
|-defaults
|---es.yml
|---en.yml
|-models
|---book
|-----es.yml
|-----en.yml
|-views
|---defaults
|-----es.yml
|-----en.yml
|---books
|-----es.yml
|-----en.yml
Ruby alias vs alias_method
Rubyでメソッドをエイリアスする場合、下記の通り、2つのやり方がある。
class User def full_name puts "Johnnie Walker" end alias name full_name end User.new.name #=>Johnnie Walker
class User def full_name puts "Johnnie Walker" end alias_method :name, :full_name end User.new.name #=>Johnnie Walker
alias vs alias_method | BigBinary Blog
結論としては Module 内であれば alias_method
を使うほうが良さそう。
下記の通り Module じゃない context の場合は alias_method
を使うことはできないので、 alias
キーワードを使う必要がある。
* def hi
* puts "hi"
> end
=> :hi
> alias hello hi
=> nil
> hello
hi
=> nil
> alias_method :hello, :hi
(irb):6:in `<main>': undefined method `alias_method' for main:Object (NoMethodError)
参考文献
- alias: クラス/メソッドの定義 (Ruby 3.1 リファレンスマニュアル)
- alias_method: Module#alias_method (Ruby 3.1 リファレンスマニュアル)