なるようになるブログ

読書感想文かrailsについてかrubyについてか

rails commit log流し読み(2017/01/13)

2017/01/13分のコミットです。

CHANGELOGへの追加はありませんでした。


Fix typo extention -> extension [ci skip]

actionview/lib/action_view/helpers/asset_tag_helper.rbのdocの修正です。

javascript_include_tagメソッドのdoc内のタイポの修正を行っています。


class Foo < Struct.new(:x) creates an extra unneeded anonymous class

Structを使用するのに、Struct.newの結果を継承して新しいクラスを定義していたのを、Struct.newの戻り値をそのまま使用するよう修正しています。

例。

-      class Parameter < Struct.new(:name, :escaper)
+      Parameter = Struct.new(:name, :escaper) do

Struct.newClassを返すので、そのまま使用する事が出来る、かつ、継承すると不要なanonymous classが出来てしまうので、それを避ける為との事です。


AC::ParamsWrapper::Options needs anonymous superclass

actionpack/lib/action_controller/metal/params_wrapper.rbの修正です。

先ほどStruct.newの結果を継承しないよう修正したのを、ActionController::ParamsWrapper::OptionクラスについてはStruct.newを継承するよう戻しています。

クラス内で幾つかのメソッドでaccessorsをoverrideしている、かつ、そのメソッド内で元のaccessorsを呼ぶようになっており、anonymous classが必要な為との事です。


Rails::Generators::AppBase::GemfileEntry needs anonymous superclass

railties/lib/rails/generators/app_base.rbの修正です。

先ほどStruct.newの結果を継承しないよう修正したのを、Rails::Generators::AppBase::GemfileEntryクラスについてはStruct.newを継承するよう戻しています。これも先ほどと同じ理由により。


Constant look-up would no longer fall back to top-level constant since ruby 2.5

activesupport/test/core_ext/module_test.rbの修正です。

delegationのテスト用クラスで定数を定義する際に、レシーバを指定するよう修正しています。

例。

-  FAILED_DELEGATE_LINE = __LINE__ + 1
+  self::FAILED_DELEGATE_LINE = __LINE__ + 1

上記定数はSomeoneクラス配下にあり、テスト時に参照する際はnamespaceをつけて(Someone::FAILED_DELEGATE_LINE)参照するようになっていました。 ただ、元のコード(self無し)だと、トップレベルに定数が定義されしまっており、本来はnamespace配下に定数は存在していませんでした。が、Ruby 2.3まではnamespace を指定した定数の参照で定数が存在しない場合、トップレベルの定数が参照される、という挙動になっていた為、正常に動作していました。

が、これがRuby 2.4からトップレベルの定数は参照されなくなり、元のコードが動作しなくなった為、正しくnamespace配下に定数を定義するよう修正したようです。

参考:variable.c: top-level constant look-up · ruby/ruby@44a2576


CI against JRuby 9.1.7.0

.travis.ymlの修正です。

CIで使用するJRubyのバージョンを9.1.7.0に更新しています。


Fix grammar in asset_url_helper.rb [ci skip]

actionview/lib/action_view/helpers/asset_url_helper.rbのdocの修正です。

AssetUrlHelper module配下の各メソッドのdocのグラマーの修正を行っています。