diff options
-rw-r--r-- | actioncable/actioncable.gemspec | 5 | ||||
-rw-r--r-- | actionmailer/actionmailer.gemspec | 5 | ||||
-rw-r--r-- | actionpack/actionpack.gemspec | 5 | ||||
-rw-r--r-- | actionpack/lib/abstract_controller/callbacks.rb | 2 | ||||
-rw-r--r-- | actionview/CHANGELOG.md | 8 | ||||
-rw-r--r-- | actionview/actionview.gemspec | 5 | ||||
-rw-r--r-- | activejob/activejob.gemspec | 5 | ||||
-rw-r--r-- | activemodel/CHANGELOG.md | 2 | ||||
-rw-r--r-- | activemodel/activemodel.gemspec | 5 | ||||
-rw-r--r-- | activerecord/CHANGELOG.md | 7 | ||||
-rw-r--r-- | activerecord/activerecord.gemspec | 5 | ||||
-rw-r--r-- | activerecord/lib/active_record/associations/has_many_through_association.rb | 5 | ||||
-rw-r--r-- | activerecord/test/cases/associations/has_many_associations_test.rb | 20 | ||||
-rw-r--r-- | activerecord/test/cases/associations/has_many_through_associations_test.rb | 11 | ||||
-rw-r--r-- | activerecord/test/cases/query_cache_test.rb | 3 | ||||
-rw-r--r-- | activesupport/activesupport.gemspec | 5 | ||||
-rw-r--r-- | activesupport/lib/active_support/callbacks.rb | 2 |
17 files changed, 82 insertions, 18 deletions
diff --git a/actioncable/actioncable.gemspec b/actioncable/actioncable.gemspec index 05ffd655e8..a72c0d2608 100644 --- a/actioncable/actioncable.gemspec +++ b/actioncable/actioncable.gemspec @@ -18,6 +18,11 @@ Gem::Specification.new do |s| s.files = Dir["CHANGELOG.md", "MIT-LICENSE", "README.md", "lib/**/*"] s.require_path = "lib" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/actioncable", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/actioncable/CHANGELOG.md" + } + s.add_dependency "actionpack", version s.add_dependency "nio4r", "~> 2.0" diff --git a/actionmailer/actionmailer.gemspec b/actionmailer/actionmailer.gemspec index 5eadd01407..ae908ddda7 100644 --- a/actionmailer/actionmailer.gemspec +++ b/actionmailer/actionmailer.gemspec @@ -19,6 +19,11 @@ Gem::Specification.new do |s| s.require_path = "lib" s.requirements << "none" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/actionmailer", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/actionmailer/CHANGELOG.md" + } + s.add_dependency "actionpack", version s.add_dependency "actionview", version s.add_dependency "activejob", version diff --git a/actionpack/actionpack.gemspec b/actionpack/actionpack.gemspec index 31803042dd..294cc45593 100644 --- a/actionpack/actionpack.gemspec +++ b/actionpack/actionpack.gemspec @@ -19,6 +19,11 @@ Gem::Specification.new do |s| s.require_path = "lib" s.requirements << "none" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/actionpack", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/actionpack/CHANGELOG.md" + } + s.add_dependency "activesupport", version s.add_dependency "rack", "~> 2.0" diff --git a/actionpack/lib/abstract_controller/callbacks.rb b/actionpack/lib/abstract_controller/callbacks.rb index ba7dec6083..e4400e8704 100644 --- a/actionpack/lib/abstract_controller/callbacks.rb +++ b/actionpack/lib/abstract_controller/callbacks.rb @@ -29,7 +29,7 @@ module AbstractController included do define_callbacks :process_action, - terminator: ->(controller, result_lambda) { result_lambda.call if result_lambda.is_a?(Proc); controller.performed? }, + terminator: ->(controller, result_lambda) { result_lambda.call; controller.performed? }, skip_after_callbacks_if_terminated: true end diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 916d29a540..e618183129 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,9 +1,9 @@ -* Fix issues with scopes and engine on `current_page?` method. - +* Fix issues with scopes and engine on `current_page?` method. + Fixes #29401. - + *Nikita Savrov* - + * Generate field ids in `collection_check_boxes` and `collection_radio_buttons`. This makes sure that the labels are linked up with the fields. diff --git a/actionview/actionview.gemspec b/actionview/actionview.gemspec index 41221dd04e..48e79c53ca 100644 --- a/actionview/actionview.gemspec +++ b/actionview/actionview.gemspec @@ -19,6 +19,11 @@ Gem::Specification.new do |s| s.require_path = "lib" s.requirements << "none" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/actionview", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/actionview/CHANGELOG.md" + } + s.add_dependency "activesupport", version s.add_dependency "builder", "~> 3.1" diff --git a/activejob/activejob.gemspec b/activejob/activejob.gemspec index 2f2b94a4c4..bdf23223d1 100644 --- a/activejob/activejob.gemspec +++ b/activejob/activejob.gemspec @@ -18,6 +18,11 @@ Gem::Specification.new do |s| s.files = Dir["CHANGELOG.md", "MIT-LICENSE", "README.md", "lib/**/*"] s.require_path = "lib" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/activejob", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/activejob/CHANGELOG.md" + } + s.add_dependency "activesupport", version s.add_dependency "globalid", ">= 0.3.6" end diff --git a/activemodel/CHANGELOG.md b/activemodel/CHANGELOG.md index 7483704212..2916e5eabb 100644 --- a/activemodel/CHANGELOG.md +++ b/activemodel/CHANGELOG.md @@ -1,4 +1,4 @@ -* Fix regression in numericality validator when comparing Decimal and Float input +* Fix regression in numericality validator when comparing Decimal and Float input values with more scale than the schema. *Bradley Priest* diff --git a/activemodel/activemodel.gemspec b/activemodel/activemodel.gemspec index 43f1e09c77..18a35678f1 100644 --- a/activemodel/activemodel.gemspec +++ b/activemodel/activemodel.gemspec @@ -18,5 +18,10 @@ Gem::Specification.new do |s| s.files = Dir["CHANGELOG.md", "MIT-LICENSE", "README.rdoc", "lib/**/*"] s.require_path = "lib" + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/activemodel", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/activemodel/CHANGELOG.md" + } + s.add_dependency "activesupport", version end diff --git a/activerecord/CHANGELOG.md b/activerecord/CHANGELOG.md index d4f4041910..f780029a18 100644 --- a/activerecord/CHANGELOG.md +++ b/activerecord/CHANGELOG.md @@ -1,3 +1,10 @@ +* Previously, when building records using a `has_many :through` association, + if the child records were deleted before the parent was saved, they would + still be persisted. Now, if child records are deleted before the parent is saved + on a `has_many :through` association, the child records will not be persisted. + + *Tobias Kraze* + * Merging two relations representing nested joins no longer transforms the joins of the merged relation into LEFT OUTER JOIN. Example to clarify: diff --git a/activerecord/activerecord.gemspec b/activerecord/activerecord.gemspec index 450ec0bba9..a626a1f21b 100644 --- a/activerecord/activerecord.gemspec +++ b/activerecord/activerecord.gemspec @@ -21,6 +21,11 @@ Gem::Specification.new do |s| s.extra_rdoc_files = %w(README.rdoc) s.rdoc_options.concat ["--main", "README.rdoc"] + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/activerecord", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/activerecord/CHANGELOG.md" + } + s.add_dependency "activesupport", version s.add_dependency "activemodel", version diff --git a/activerecord/lib/active_record/associations/has_many_through_association.rb b/activerecord/lib/active_record/associations/has_many_through_association.rb index 53ffb3b68d..2fd20b4368 100644 --- a/activerecord/lib/active_record/associations/has_many_through_association.rb +++ b/activerecord/lib/active_record/associations/has_many_through_association.rb @@ -109,6 +109,11 @@ module ActiveRecord record end + def remove_records(existing_records, records, method) + super + delete_through_records(records) + end + def target_reflection_has_associated_record? !(through_reflection.belongs_to? && owner[through_reflection.foreign_key].blank?) end diff --git a/activerecord/test/cases/associations/has_many_associations_test.rb b/activerecord/test/cases/associations/has_many_associations_test.rb index 169e1a5449..b02653bbcc 100644 --- a/activerecord/test/cases/associations/has_many_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_associations_test.rb @@ -745,35 +745,35 @@ class HasManyAssociationsTest < ActiveRecord::TestCase firm = Firm.all.merge!(order: "id").first collection = firm.clients - original_object_id = collection.first.object_id - assert_equal original_object_id, collection.first.object_id, "Expected second call to #first to cache the same object" + original_object = collection.first + assert_same original_object, collection.first, "Expected second call to #first to cache the same object" # It should return a different object, since the association has been reloaded - assert_not_equal original_object_id, firm.clients.first.object_id, "Expected #first to return a new object" + assert_not_same original_object, firm.clients.first, "Expected #first to return a new object" end def test_find_first_after_reset firm = Firm.all.merge!(order: "id").first collection = firm.clients - original_object_id = collection.first.object_id - assert_equal original_object_id, collection.first.object_id, "Expected second call to #first to cache the same object" + original_object = collection.first + assert_same original_object, collection.first, "Expected second call to #first to cache the same object" collection.reset # It should return a different object, since the association has been reloaded - assert_not_equal original_object_id, collection.first.object_id, "Expected #first after #reload to return a new object" + assert_not_same original_object, collection.first, "Expected #first after #reset to return a new object" end def test_find_first_after_reload firm = Firm.all.merge!(order: "id").first collection = firm.clients - original_object_id = collection.first.object_id - assert_equal original_object_id, collection.first.object_id, "Expected second call to #first to cache the same object" - collection.reset + original_object = collection.first + assert_same original_object, collection.first, "Expected second call to #first to cache the same object" + collection.reload # It should return a different object, since the association has been reloaded - assert_not_equal original_object_id, collection.first.object_id, "Expected #first after #reload to return a new object" + assert_not_same original_object, collection.first, "Expected #first after #reload to return a new object" end def test_find_all_with_include_and_conditions diff --git a/activerecord/test/cases/associations/has_many_through_associations_test.rb b/activerecord/test/cases/associations/has_many_through_associations_test.rb index 9156f6d57a..1c2138a3d0 100644 --- a/activerecord/test/cases/associations/has_many_through_associations_test.rb +++ b/activerecord/test/cases/associations/has_many_through_associations_test.rb @@ -319,6 +319,17 @@ class HasManyThroughAssociationsTest < ActiveRecord::TestCase assert_includes post.single_people, person end + def test_build_then_remove_then_save + post = posts(:thinking) + post.people.build(first_name: "Bob") + ted = post.people.build(first_name: "Ted") + post.people.delete(ted) + post.save! + post.reload + + assert_equal ["Bob"], post.people.collect(&:first_name) + end + def test_both_parent_ids_set_when_saving_new post = Post.new(title: "Hello", body: "world") person = Person.new(first_name: "Sean") diff --git a/activerecord/test/cases/query_cache_test.rb b/activerecord/test/cases/query_cache_test.rb index 9b741545d7..c2d40f2940 100644 --- a/activerecord/test/cases/query_cache_test.rb +++ b/activerecord/test/cases/query_cache_test.rb @@ -42,7 +42,8 @@ class QueryCacheTest < ActiveRecord::TestCase mw = middleware { |env| Task.find 1 Task.find 1 - assert_equal 1, ActiveRecord::Base.connection.query_cache.length + query_cache = ActiveRecord::Base.connection.query_cache + assert_equal 1, query_cache.length, query_cache.keys raise "lol borked" } assert_raises(RuntimeError) { mw.call({}) } diff --git a/activesupport/activesupport.gemspec b/activesupport/activesupport.gemspec index ed277c81ef..16e912694c 100644 --- a/activesupport/activesupport.gemspec +++ b/activesupport/activesupport.gemspec @@ -20,6 +20,11 @@ Gem::Specification.new do |s| s.rdoc_options.concat ["--encoding", "UTF-8"] + s.metadata = { + "source_code_uri" => "https://github.com/rails/rails/tree/v#{version}/activesupport", + "changelog_uri" => "https://github.com/rails/rails/blob/v#{version}/activesupport/CHANGELOG.md" + } + s.add_dependency "i18n", "~> 0.7" s.add_dependency "tzinfo", "~> 1.1" s.add_dependency "minitest", "~> 5.1" diff --git a/activesupport/lib/active_support/callbacks.rb b/activesupport/lib/active_support/callbacks.rb index 54f8321606..df18c35199 100644 --- a/activesupport/lib/active_support/callbacks.rb +++ b/activesupport/lib/active_support/callbacks.rb @@ -596,7 +596,7 @@ module ActiveSupport Proc.new do |target, result_lambda| terminate = true catch(:abort) do - result_lambda.call if result_lambda.is_a?(Proc) + result_lambda.call terminate = false end terminate |