Railsで、以下のように acronym (略語) を追加することがあります。
ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'HTTP'
end
主に、定数名で使ったり、humanize
で使ったりしたいときに設定すると思います。
今回、オートローダーを変更する際に、定数の検索方法が変わるということで、acronymを追加するかどうか、その影響を調査している際に当たりました。
acronym を登録したとき
API documentに書いてありましたので、引用します。
acronymで'HTTP'
を設定したとき、camelizeの挙動が以下のようになります。
acronym 'HTTP'
camelize 'http' # => 'HTTP'
camelize 'my_http_delimited' # => 'MyHTTPDelimited'
camelize 'https' # => 'Https', not 'HTTPs'
String#camelize
も同様です
'http'.camelize # => "HTTP"
'my_http_delimited'.camelize # => "MyHTTPDelimited"
'https'.camelize # => "Https"
'https'
をcamelizeするときはHTTPS
にならないのは想像がつくのですが、逆に、underscoreをすると、
'HTTP'.underscore # => "http"
'HTTPS'.underscore # => "http_s"
のように、影響してしまいます。
acronymに大文字が続く場合を想定しておく必要がありそうです
その他 オートローダーに関連して
classic オートローダーでは定数読み込みの際に、Railsガイドにあるように、
VATという定数に対してunderscoreが呼び出されてvatが生成され、これを元にvat.rbというファイルを検索することで、ファイルが正常に見つかります。
のようにunderscoreを使っていたようですが、zeitwerkではファイル名をcamelizeをするように変わったようです。
参考