2016/01/09分のコミットです。
CHANGELOGにのったコミットは以下の通りです。
Merge pull request #22934 from mperham/master
Action Cableの修正です。
Action Cableの非同期処理にcelluloidを使用していたのを、concurrent-rubyを使用するよう修正しています。
これにより、celluloid及びその関連のgemがrailsのgemの依存から削除されています。
が、ちょっと問題が発生したらしく後ほどrevertされています。
Revert "Move async execution from celluloid to concurrent-ruby"
Action Cableの修正です。
先ほどマージされたAction Cableの非同期処理にcelluloidを使用していたのを、concurrent-rubyを使用するよう修正した対応をrevertしています。
マージされた対応をBasecamp 3で実際動かしてみた所、幾つか問題が発生した為、一時的にrevertしたとの事です。後ほど問題が起きた箇所を確認し、対応するとの事です。
Get update_attributes working with SchemaMigration
activerecord/lib/active_record/schema_migration.rb
の修正です。
SchemaMigration#primary_key
にversion
を使用するよう修正しています。
schema_migrations
テーブルのversion
カラムはユニークである事が保証されている為、かつ、primary_keyが無いとupdate_attributes
が動作しない為、primary keyを設定するよう対応したとの事です。
この対応により、SchemaMigration
に対して、update_attributes
が使用出来るようになっています。
ActiveRecord::SchemaMigration.last.update_attributes(version: "20160106090010"
Merge pull request #22967 from schneems/schneems/generic-metadata
Active Recordの修正です。
DB破壊系のtask(db:drop
、db:purge
)等を指定された環境(デフォルトはproduction
)で動作しないよう対応しています。
実際にdb:drop
をproduction環境で実行しようとすると、ActiveRecord::ProtectedEnvironmentError
が発生します。
$ ./bin/rails db:drop RAILS_ENV=production rails aborted! ActiveRecord::ProtectedEnvironmentError: You are attempting to run a destructive action against your 'production' database if you are sure you want to continue, run the same command with the environment variable DISABLE_DATABASE_ENVIRONMENT_CHECK=1 /home/yaginuma/program/rails/master_y_yagi/rails/activerecord/lib/active_record/tasks/database_tasks.rb:51:in `check_protected_environments!' /home/yaginuma/program/rails/master_y_yagi/rails/activerecord/lib/active_record/railties/databases.rake:5:in `block (2 levels) in <top (required)>' /home/yaginuma/program/rails/master_y_yagi/rails/railties/lib/rails/commands/rake_proxy.rb:13:in `block in run_rake_task' /home/yaginuma/program/rails/master_y_yagi/rails/railties/lib/rails/commands/rake_proxy.rb:10:in `run_rake_task' /home/yaginuma/program/rails/master_y_yagi/rails/railties/lib/rails/commands/commands_tasks.rb:51:in `run_command!' /home/yaginuma/program/rails/master_y_yagi/rails/railties/lib/rails/command.rb:20:in `run' /home/yaginuma/program/rails/master_y_yagi/rails/railties/lib/rails/commands.rb:19:in `<top (required)>' /home/yaginuma/program/rails/master/bin/rails:9:in `require' /home/yaginuma/program/rails/master/bin/rails:9:in `<top (required)>' /home/yaginuma/program/rails/master/bin/spring:13:in `<top (required)>' ./bin/rails:3:in `load' ./bin/rails:3:in `<main>' Tasks: TOP => db:drop => db:check_protected_environments (See full trace by running task with --trace)
強制的に動作させたい場合は、エラーメッセージにある通り、DISABLE_DATABASE_ENVIRONMENT_CHECK=1
を設定すればOKです。
また、production以外の環境を指定したい場合は、ActiveRecord::Base.protected_environments
で指定可能になっています。
昔同じような事をするgemを作っていたのですが、これによりgemが不要になってしまいました。rails標準で入るの自体は良いことですねえ。
Refactor tz aware types, add support for PG ranges
Active Recordの修正です。
TimeZoneに関する処理のリファクタ、及び、PostgreSQLのtsrange
、tstzrange
型を使用した場合にTime.zone
に設定した値が反映されないバグがあったのを修正しています。
[ci skip] Fix typo Renderering --> Rendering
actionpack/lib/action_controller/metal/renderers.rb
のdocの修正です。
Rendering
をRenderering
にタイポしている箇所があったのを修正しています。
activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb
の修正です。
TimeZoneConversion::TimeZoneConverter#convert_time_to_time_zone
メソッドにFloat::INFINITY
を渡した場合に無限ループが発生していまう問題があったのを修正しています。
[ci skip] automatic_inverse_of
returns false
not nil
(document fix)
activerecord/lib/active_record/reflection.rb
のdocの修正です。
#automatic_inverse_of
メソッドのdocに、nil又はinverse association nameがリターンされる、と書いてあったのですが、実際はfalse又はinverse association nameがリターンされるようになっており、その旨docを修正しています。
Added missing CHANGELOG entry for https://github.com/rails/rails/pull/22976
Get update_attributes working with SchemaMigrationの対応について、CHANGELOGにentryを追記しています。
match the environment variable name that actually checking and error message
activerecord/lib/active_record/tasks/database_tasks.rb
の修正です。
DB破壊系のtask(db:drop
、db:purge
)等を指定された環境(デフォルトはproduction
)で動作しないよう対応したコミット(Merge pull request #22967 from schneems/schneems/generic-metadata)で、強制的に動作させたい場合に設定する環境変数が、エラーメッセージに表示する環境変数と違う値を見ていた(エラーメッセージではDISABLE_DATABASE_ENVIRONMENT_CHECK
と表示されていたが、実際のコードではDISABLE_DATABASE_internal_metadata
を見ていた)のを、同じ値を見るよう修正しています。
rake log:clear task updated refs[#22544]
railties/CHANGELOG.md
の修正です。
rake log:clear
タスクのデフォルトの挙動が、*.log
を削除から、デフォルトの環境のログファイル(development,test,production)のみ削除するように修正しています。
従来通り全てのログを削除したい場合は、ENV['LOGS']
にall
を指定して実行すればOKです。また、特定の環境のログだけ削除したい場合も、同様にENV['LOGS']
を指定すればOKです。
# 全てのログを削除 LOGS=all ./bin/rails log:clear # test, stagingのログを削除 LOGS="test,staging" ./bin/rails log:clear