2014/07/18分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
activemodel/CHANGELOG.md
Dont swallow errors on compute_type when having a bad alias_method on a class.
docs, select
and friends with multiple=true
include a blank string.
actionview/lib/action_view/helpers/form_options_helper.rb
のdocの修正です。
selectタグでmultiple: true
を使用する場合、必ず空文字が含まれてしまう旨注意事項を追加しています。
helper methods are public, so we can just call them
actionpack/test/controller/url_for_test.rb
の修正です。
ヘルパーメソッドの呼び出しをsend
経由ではなく、普通のメソッド呼び出しに修正しています。ヘルパーメソッドはpublicなので、普通に呼べるから、ですね。
use a strategy object for generating urls in named helpers
routingのリファクタリングです。
URLの生成処理にstrategy objectを使用するよう修正しています。
PATH = ->(options) { ActionDispatch::Http::URL.path_for(options) } FULL = ->(options) { ActionDispatch::Http::URL.full_url_for(options) } UNKNOWN = ->(options) { ActionDispatch::Http::URL.url_for(options) }
こんな感じで。
Make restore_attributes public
activemodel/lib/active_model/dirty.rb
の修正です。
restore_attributes
メソッドをprivate -> publicに修正しています。
model.name = 'Dmitry' @model.color = 'Red' @model.save @model.name = 'Bob' @model.color = 'White' @model.restore_attributes(['name']) assert @model.changed? assert_equal 'Dmitry', @model.name assert_equal 'White', @model.color
restore_attributes、普通に便利そうであるのですが、何でprivateだったんだろう。
pass the route name to define_url_helper
actionpack/lib/action_dispatch/routing/route_set.rb
の修正です。
define_url_helper
メソッドにroute name引数が追加されています。
この修正で、Hashの生成を2つ避けれるようです。性能改善の一環ですかね。
recall
should be path_parameters
, also make it required
actionpack/lib/action_dispatch/journey/formatter.rb
の修正です。
generate
メソッドの第三引数は元々任意だったのですが、必須にするよう修正しています。
[EXPERIMENTAL] run actionpack tests in parallel
actionpack/test/abstract_unit.rb
actionpackのテストがparallelに実行されるよう改修しています。
drbを使って処理行われていますねえ。
EXPERIMENTAL
となっているので、問題が起きたらrevertするようです。
activerecord/lib/active_record/type/decimal.rb
の修正です。
case/whenで記載されていた処理をif/elseに修正しています。
- case value - when ::Numeric, ::String + if value.is_a?(::Numeric) || value.is_a?(::String) BigDecimal(value, precision.to_i) - when proc { value.respond_to?(:to_d) } + elsif value.respond_to?(:to_d)
when proc
はちょっと解りづらいですねえ。
activerecord/test/cases/migration/column_attributes_test.rb
の修正です。
幾つかのテストをSQLiteの場合無効にしています。
decimalなど、SQLiteで対応してないケースですね。
only parallelize on forking systems
actionpack/test/abstract_unit.rb
の修正です。
parallel処理について、forkが出来る環境かどうかチェック処理を入れています。Windows以外ですかね。
do not restart the service, just stop it
actionpack/test/abstract_unit.rb
の修正です。
stop処理に何故かあったDRb start処理を削除しています。
actionpack/test/controller/log_subscriber_test.rb
の修正です。
tmpファイルのpath生成処理にDir::Tmpname.make_tmpname
メソッドを使用するよう修正しています。
Merge pull request #16210 from sonnym/assert_valid_keys_in_validate
activemodel/lib/active_model/validations.rb
の修正です。
validate
メソッドで引数のチェックを行うよう修正しています。
class User < ActiveRecord::Base validate :name, presence: true # validates :name, presence: true が正しい end
上記の用にクラス定義を行った際、
s = User.new # ArgumentError: Unknown key: :presence. Valid keys are: :on, :if, :unless
上記の用にArgumentErrorが発生するよう修正しています。
validates
メソッドを使用しなくてはならないのに、validate
メソッドを使用していますミスを防ぐ為との事です。最初の頃混乱してたので、これは良い修正ですね。
pass the test reporter by reference
actionpack/test/abstract_unit.rb
の修正です。
test reporterをキューに渡す際、参照渡しするよう修正しています。
- def << o; @queue << o; end + def << o + o[2] = DRbObject.new(o[2]) if o + @queue << o + end
drbが良く解らない…。勉強しなくては…。
activesupport/test/multibyte_conformance_test.rb
の修正です。
setup
メソッドで行っていたファイルのダウンロード処理をクラスロード時に行うよう修正しています。
マルチスレッド対策。
activemodel/lib/active_model/validations.rb
の修正です。
%i記法していた箇所があったのを修正しています。1.9系だと使えないですよねえ。
因みに、Rails 5では1.9は対応しないようです。
reporting is only done in one thread, so we can safely remove the lock
actionpack/test/abstract_unit.rb
の修正です。
レポーティング処理からthreadロックを削除しています。
レポーティング処理は1スレッドでしか行われない為との事です。
Prefer to pass block when logging.
各moduleのログ出力処理の修正です。
ログ出力処理をブロックで囲むよう修正しています。
rails guideにも記載があるのですが、ログ出力処理はブロックで囲む事を推奨しています。ロード時ではなく、実行時にString Objectを生成処理を行われるようにする為との事。
Merge pull request #15762 from arthurnn/better_error_on_bad_alias_method
activerecord/lib/active_record/inheritance.rb
の修正です。
compute_type
メソッド誤ったalias_methodがあった場合に、エラー情報を隠蔽してしまっていたのを修正しています。