なるようになるブログ

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

rails commit log流し読み(2016/01/17)

2016/01/17分のコミットです。

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


Avoid multiple default paths to server.pid file

railties/lib/rails/commands/server.rbの修正です。

defaultのpid pathをRails::Server::Options#default_optionsが呼ばれる為に生成したのを、クラスロード時にpathを生成し、それを使いまわすよう修正しています。

 module Rails
    class Server < ::Rack::Server
      class Options
 +      DEFAULT_PID_PATH = File.expand_path("tmp/pids/server.pid").freeze
 +
        def parse!(args)
          args, options = args.dup, {}

 @@ -91,7 +93,7 @@ def default_options
          environment:        (ENV['RAILS_ENV'] || ENV['RACK_ENV'] || "development").dup,
          daemonize:          false,
          caching:            false,
 -        pid:                File.expand_path("tmp/pids/server.pid")
 +        pid:                Options::DEFAULT_PID_PATH
        })

Rails 5.0.0.beta1でrails serverをdaemonとして起動してようとした場合にクラッシュしてしまう問題があり、その対応です。

File.expand_pathは引数に相対パスを渡した場合、default pathを基準にした文字列を返します。daemonとして起動しない場合default pathがrailsのrootディレクトリなので問題無いのですが、daemonとして起動する場合、Process.daemonが実行された時点でcurrent shellとデタッチしてしまい、default pathが'/'となってしまう為、pidファイルを/tmp/pids/server.pidに生成しようとして失敗し、起動してしまっていたとの事です。

なお、rack 1系の時はdefault optionsの値をrack側でキャッシュしたようなのですが、rack 2系から値をキャッシュしなくなった為、問題が発生してしまったとの事です。


Remove literal? check to fix issue with prefixed optionals

actionpack/lib/action_dispatch/routing/mapper.rbの修正です。

Rails 5.0.0.beta1 でroutingに-:を使用した場合(ex: `get 'prefixed_optional(/p-:page)')に、routingが正しく認識されないバグがあったのを修正しています。リテラルのチェック処理に誤りがあった為問題が発生してしまっていたようです。


Make ref return the internal symbol.

actionview/lib/action_view/template/types.rbの修正です。

ActionView::Template::Types::Type#refメソッドが、@symbol変数の値を返すよう修正しています。

        def ref
-          to_sym || to_s
+          @symbol
         end

initializeの時点で@symbolにto_symした値を保持している為、再度変換処理を呼び出すのではなく、変換済みの値を使用する為に修正したようです。