Last active
May 31, 2016 21:09
-
-
Save jrafanie/a0731271a76df3a6c35742673d4f04b0 to your computer and use it in GitHub Desktop.
Rails 5.0.0.rc1 throws NotImplementedError on update if select is missing target column or updated_* columns
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| begin | |
| require 'bundler/inline' | |
| rescue LoadError => e | |
| $stderr.puts 'Bundler version 1.10 or later is required. Please update your Bundler' | |
| raise e | |
| end | |
| gemfile(true) do | |
| source 'https://rubygems.org' | |
| gem 'rails', '5.0.0.rc1' | |
| # gem 'rails', '4.2.6' | |
| gem 'sqlite3' | |
| end | |
| require 'active_record' | |
| require 'logger' | |
| require 'minitest/autorun' | |
| # This connection will do for database-independent bug reports. | |
| ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: ':memory:') | |
| ActiveRecord::Schema.define do | |
| create_table :people, force: true do |t| | |
| t.string :name | |
| t.string :color | |
| t.datetime :created_on | |
| t.datetime :updated_on | |
| end | |
| end | |
| class Person < ActiveRecord::Base | |
| end | |
| class JoeTest < ActiveSupport::TestCase | |
| def setup | |
| Person.create!(name: 'Joe') | |
| end | |
| def test_update_for_unselected_column | |
| person = Person.where(name: 'Joe').select(:id, :name).first | |
| # 5.0.0.rc1: Raises NotImplementedError since color isn't in the select | |
| assert_nothing_raised { person.update(color: 'blue') } | |
| assert_equal 'blue', Person.find(person.id).color | |
| end | |
| def test_update_for_selected_column | |
| person = Person.where(name: 'Joe').select(:id, :name, :color).first | |
| # 5.0.0.rc1: Raises NotImplementedError since updated_on isn't in the select | |
| # Note: this test passes randomly depending on test order | |
| assert_nothing_raised { person.update(color: 'blue') } | |
| assert_equal 'blue', Person.find(person.id).color | |
| end | |
| def test_update_without_select | |
| person = Person.where(name: 'Joe').first | |
| assert_nothing_raised { person.update(color: 'blue') } | |
| assert_equal 'blue', Person.find(person.id).color | |
| end | |
| end |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 05:04:24 ~/Code (2.2.5) + ruby rails_test.rb | |
| Fetching gem metadata from https://rubygems.org/ | |
| Fetching version metadata from https://rubygems.org/ | |
| Fetching dependency metadata from https://rubygems.org/ | |
| Resolving dependencies... | |
| Using rake 11.1.2 | |
| Using i18n 0.7.0 | |
| Using json 1.8.3 | |
| Using minitest 5.9.0 | |
| Using thread_safe 0.3.5 | |
| Using builder 3.2.2 | |
| Using erubis 2.7.0 | |
| Using mini_portile2 2.0.0 | |
| Using rack 1.6.4 | |
| Using mime-types-data 3.2016.0521 | |
| Using arel 6.0.3 | |
| Using bundler 1.12.5 | |
| Using concurrent-ruby 1.0.2 | |
| Using thor 0.19.1 | |
| Using sqlite3 1.3.11 | |
| Using tzinfo 1.2.2 | |
| Using nokogiri 1.6.7.2 | |
| Using rack-test 0.6.3 | |
| Using mime-types 3.1 | |
| Using sprockets 3.6.0 | |
| Using activesupport 4.2.6 | |
| Using loofah 2.0.3 | |
| Using mail 2.6.4 | |
| Using rails-deprecated_sanitizer 1.0.3 | |
| Using globalid 0.3.6 | |
| Using activemodel 4.2.6 | |
| Using rails-html-sanitizer 1.0.3 | |
| Using rails-dom-testing 1.0.7 | |
| Using activejob 4.2.6 | |
| Using activerecord 4.2.6 | |
| Using actionview 4.2.6 | |
| Using actionpack 4.2.6 | |
| Using actionmailer 4.2.6 | |
| Using railties 4.2.6 | |
| Using sprockets-rails 3.0.4 | |
| Using rails 4.2.6 | |
| -- create_table(:people, {:force=>true}) | |
| -> 0.0024s | |
| Run options: --seed 6364 | |
| # Running: | |
| DEPRECATION WARNING: You did not specify a value for the configuration option `active_support.test_order`. In Rails 5, the default value of this option will change from `:sorted` to `:random`. | |
| To disable this warning and keep the current behavior, you can add the following line to your `config/environments/test.rb`: | |
| Rails.application.configure do | |
| config.active_support.test_order = :sorted | |
| end | |
| Alternatively, you can opt into the future behavior by setting this option to `:random`. (called from test_order at /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-4.2.6/lib/active_support/test_case.rb:42) | |
| ... | |
| Finished in 0.018989s, 157.9882 runs/s, 157.9882 assertions/s. | |
| 3 runs, 3 assertions, 0 failures, 0 errors, 0 skips |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 05:05:32 ~/Code (2.2.5) - ruby rails_test.rb | |
| Fetching gem metadata from https://rubygems.org/ | |
| Fetching version metadata from https://rubygems.org/ | |
| Fetching dependency metadata from https://rubygems.org/ | |
| Resolving dependencies... | |
| Using rake 11.1.2 | |
| Using concurrent-ruby 1.0.2 | |
| Using i18n 0.7.0 | |
| Using minitest 5.9.0 | |
| Using thread_safe 0.3.5 | |
| Using builder 3.2.2 | |
| Using erubis 2.7.0 | |
| Using mini_portile2 2.0.0 | |
| Using json 1.8.3 | |
| Using nio4r 1.2.1 | |
| Using websocket-extensions 0.1.2 | |
| Using mime-types-data 3.2016.0521 | |
| Using arel 7.0.0 | |
| Using bundler 1.12.5 | |
| Using method_source 0.8.2 | |
| Using thor 0.19.1 | |
| Using sqlite3 1.3.11 | |
| Using tzinfo 1.2.2 | |
| Using nokogiri 1.6.7.2 | |
| Using rack 2.0.0.rc1 | |
| Using websocket-driver 0.6.4 | |
| Using mime-types 3.1 | |
| Using activesupport 5.0.0.rc1 | |
| Using loofah 2.0.3 | |
| Using rack-test 0.6.3 | |
| Using sprockets 3.6.0 | |
| Using mail 2.6.4 | |
| Using rails-deprecated_sanitizer 1.0.3 | |
| Using globalid 0.3.6 | |
| Using activemodel 5.0.0.rc1 | |
| Using rails-html-sanitizer 1.0.3 | |
| Using rails-dom-testing 1.0.7 | |
| Using activejob 5.0.0.rc1 | |
| Using activerecord 5.0.0.rc1 | |
| Using actionview 5.0.0.rc1 | |
| Using actionpack 5.0.0.rc1 | |
| Using actioncable 5.0.0.rc1 | |
| Using actionmailer 5.0.0.rc1 | |
| Using railties 5.0.0.rc1 | |
| Using sprockets-rails 3.0.4 | |
| Using rails 5.0.0.rc1 | |
| -- create_table(:people, {:force=>true}) | |
| -> 0.0141s | |
| Run options: --seed 21191 | |
| # Running: | |
| EE. | |
| Finished in 0.011674s, 256.9830 runs/s, 85.6610 assertions/s. | |
| 1) Error: | |
| JoeTest#test_update_for_selected_column: | |
| NotImplementedError: NotImplementedError | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:84:in `type_cast' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:46:in `original_value' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:44:in `original_value' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:123:in `changed_from_assignment?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:55:in `changed?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:25:in `changed?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:9:in `block in changed_values' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `each' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `each_with_object' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `changed_values' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:83:in `changed_attributes' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activemodel-5.0.0.rc1/lib/active_model/dirty.rb:146:in `changed' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:127:in `keys_for_partial_write' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:119:in `_update_record' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:306:in `block in _update_record' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:97:in `__run_callbacks__' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:750:in `_run_update_callbacks' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:306:in `_update_record' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/timestamp.rb:81:in `_update_record' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:534:in `create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:298:in `block in create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:97:in `__run_callbacks__' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:750:in `_run_save_callbacks' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:298:in `create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:125:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/validations.rb:44:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:22:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:319:in `block (2 levels) in save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:395:in `block in with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:230:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:211:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:319:in `block in save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:334:in `rollback_active_record_state!' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:318:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/suppressor.rb:41:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:266:in `block in update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:395:in `block in with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:211:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:264:in `update' | |
| rails_test.rb:52:in `block in test_update_for_selected_column' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/test_case.rb:83:in `assert_nothing_raised' | |
| rails_test.rb:52:in `test_update_for_selected_column' | |
| 2) Error: | |
| JoeTest#test_update_for_unselected_column: | |
| NotImplementedError: NotImplementedError | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:84:in `type_cast' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:46:in `original_value' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:44:in `original_value' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:123:in `changed_from_assignment?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute.rb:55:in `changed?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:25:in `changed?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:9:in `block in changed_values' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `each' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `each_with_object' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_mutation_tracker.rb:8:in `changed_values' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:83:in `changed_attributes' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activemodel-5.0.0.rc1/lib/active_model/dirty.rb:137:in `changed?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/timestamp.rb:85:in `should_record_timestamps?' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/timestamp.rb:72:in `_update_record' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:534:in `create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:298:in `block in create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:97:in `__run_callbacks__' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/callbacks.rb:750:in `_run_save_callbacks' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/callbacks.rb:298:in `create_or_update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:125:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/validations.rb:44:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/attribute_methods/dirty.rb:22:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:319:in `block (2 levels) in save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:395:in `block in with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:230:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:211:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:319:in `block in save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:334:in `rollback_active_record_state!' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:318:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/suppressor.rb:41:in `save' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:266:in `block in update' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:395:in `block in with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `block in transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/transaction.rb:189:in `within_new_transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/abstract/database_statements.rb:232:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:211:in `transaction' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/transactions.rb:392:in `with_transaction_returning_status' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activerecord-5.0.0.rc1/lib/active_record/persistence.rb:264:in `update' | |
| rails_test.rb:43:in `block in test_update_for_unselected_column' | |
| /Users/joerafaniello/.gem/ruby/2.2.5/gems/activesupport-5.0.0.rc1/lib/active_support/test_case.rb:83:in `assert_nothing_raised' | |
| rails_test.rb:43:in `test_update_for_unselected_column' | |
| 3 runs, 1 assertions, 0 failures, 2 errors, 0 skips | |
| 05:05:44 ~/Code (2.2.5) - |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment