ar_transaction_changes 1.1.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 819e175a8fd364bb81f216e4431e3481c4fb4458
4
- data.tar.gz: de05ff5509c551638af333b7b42117cd33e4b1f0
3
+ metadata.gz: 464cbfbf5ac37f36f38328159dc6c6d913d5db95
4
+ data.tar.gz: 59ae318875b3050ee7a4a2c71f196a6e2eb34669
5
5
  SHA512:
6
- metadata.gz: dcf1129a18a18cf496049e54ef46169c40ce6d36cc7ac67c7ae688188fb89a614813418e4d143e6a36e6bf1f0d1413dfd156d960f0cb1694ce0f1af934c6e6be
7
- data.tar.gz: baadb5f8e2083168eaea6eac1374bfc871fa55820b7569a510b6f9a22a93d242c327d1211d19ae3e3cc6270373d871f30eb14975bdde70758fb7e7d32ed34031
6
+ metadata.gz: 7d46632d1585c8038490067757bb143fb0f0d32a2fd4465e03b424b148177454305042a9ad15ec9c9c761c8f743814e5b7d6a431c76b7cc56b482c896eda1b72
7
+ data.tar.gz: 86a9948798f5a517adb26262d73064e03f8cb4f7ae1da73e94a24e796fe7ff0590d1145389a1f46f24cdcb59abab2d43f4619bf14c31caf3de0bae61c2691b24
@@ -2,25 +2,18 @@ language: ruby
2
2
  sudo: false
3
3
 
4
4
  rvm:
5
- - 2.0.0
6
- - 2.1.5
7
- - 2.2.4
5
+ - 2.2.5
6
+ - 2.3.1
8
7
 
9
8
  gemfile:
10
- - gemfiles/rails_3_2.gemfile
11
- - gemfiles/rails_4_0.gemfile
12
- - gemfiles/rails_4_1.gemfile
13
- - gemfiles/rails_4_2.gemfile
14
- - gemfiles/rails_5.gemfile
9
+ - Gemfile.rails42
10
+ - Gemfile.rails50
11
+ - Gemfile.rails51
15
12
 
16
13
  matrix:
17
- exclude:
18
- - rvm: 2.0.0
19
- gemfile: gemfiles/rails_5.gemfile
20
- - rvm: 2.1.5
21
- gemfile: gemfiles/rails_5.gemfile
22
- - rvm: 2.2.4
23
- gemfile: gemfiles/rails_3_2.gemfile
14
+ include:
15
+ - rvm: 2.1.9
16
+ gemfile: Gemfile.rails42
24
17
 
25
18
  services:
26
19
  - mysql
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 4.2.0"
4
+
5
+ gemspec
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 5.0.0"
4
+
5
+ gemspec
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "rails", "~> 5.1.0.rc1"
4
+
5
+ gemspec
data/Rakefile CHANGED
@@ -1,7 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
2
  require 'rake'
3
3
  require 'rake/testtask'
4
- require 'appraisal'
5
4
 
6
5
  task :default => 'test'
7
6
 
@@ -17,9 +17,8 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- gem.add_dependency "activerecord", ">= 3.0", "< 6.0", "!= 4.2.3"
20
+ gem.add_dependency "activerecord", ">= 4.2.4", "< 6.0"
21
21
 
22
22
  gem.add_development_dependency("rake")
23
23
  gem.add_development_dependency("mysql2")
24
- gem.add_development_dependency("appraisal")
25
24
  end
@@ -1,51 +1,31 @@
1
1
  require "ar_transaction_changes/version"
2
2
 
3
3
  module ArTransactionChanges
4
- if ActiveRecord::VERSION::MAJOR > 4 || (ActiveRecord::VERSION::MAJOR == 4 && ActiveRecord::VERSION::MINOR == 2)
5
- def _run_create_callbacks
6
- ret = super
7
- store_transaction_changed_attributes if ret != false
8
- ret
9
- end
10
-
11
- def _run_update_callbacks
12
- ret = super
13
- store_transaction_changed_attributes if ret != false
14
- ret
15
- end
16
-
17
- def _run_commit_callbacks
18
- super
19
- ensure
20
- @transaction_changed_attributes = nil
21
- end
22
-
23
- def _run_rollback_callbacks
24
- super
25
- ensure
26
- @transaction_changed_attributes = nil
27
- end
28
- else
29
- def run_callbacks(kind, *args)
30
- ret = super
31
- case kind.to_sym
32
- when :create, :update
33
- store_transaction_changed_attributes if ret != false
34
- when :commit, :rollback
35
- @transaction_changed_attributes = nil
36
- end
4
+ def _run_commit_callbacks
5
+ super
6
+ ensure
7
+ @transaction_changed_attributes = nil
8
+ end
37
9
 
38
- ret
39
- end
10
+ def _run_rollback_callbacks
11
+ super
12
+ ensure
13
+ @transaction_changed_attributes = nil
40
14
  end
41
15
 
42
16
  def transaction_changed_attributes
43
- changed_attributes.merge(@transaction_changed_attributes ||= {})
17
+ @transaction_changed_attributes ||= HashWithIndifferentAccess.new
44
18
  end
45
19
 
46
20
  private
47
21
 
48
- def store_transaction_changed_attributes
49
- @transaction_changed_attributes = transaction_changed_attributes
22
+ def write_attribute(attr_name, value) # override
23
+ attr_name = attr_name.to_s
24
+ old_value = attributes[attr_name]
25
+ ret = super
26
+ unless transaction_changed_attributes.key?(attr_name) || value == old_value
27
+ transaction_changed_attributes[attr_name] = old_value
28
+ end
29
+ ret
50
30
  end
51
31
  end
@@ -1,3 +1,3 @@
1
1
  module ArTransactionChanges
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -10,17 +10,12 @@ config_filename = test_dir.join("database.yml").exist? ? "database.yml" : "datab
10
10
  database_yml = YAML.load(test_dir.join(config_filename).read)
11
11
  ActiveRecord::Base.establish_connection database_yml['test']
12
12
 
13
- if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new("4.1")
14
- class ActiveRecord::ConnectionAdapters::Mysql2Adapter
15
- NATIVE_DATABASE_TYPES[:primary_key] = "int(11) auto_increment PRIMARY KEY"
16
- end
17
- end
18
-
19
13
  ActiveRecord::Base.connection.tap do |db|
20
14
  db.drop_table(:users) if db.table_exists?(:users)
21
15
  db.create_table(:users) do |t|
22
16
  t.string :name
23
17
  t.string :occupation
18
+ t.timestamps null: false
24
19
  end
25
20
  end
26
21
 
@@ -41,7 +41,7 @@ class TransactionChangesTest < MiniTest::Unit::TestCase
41
41
  @user.save!
42
42
  raise ActiveRecord::Rollback
43
43
  end
44
- assert_equal nil, @user.stored_transaction_changes
44
+ assert_nil @user.stored_transaction_changes
45
45
  end
46
46
 
47
47
  def test_transaction_changes_after_reload_saved
@@ -66,4 +66,32 @@ class TransactionChangesTest < MiniTest::Unit::TestCase
66
66
  assert_equal ["Dylan", "Dillon"], @user.stored_transaction_changes["name"]
67
67
  end
68
68
 
69
+ def test_transaction_changes_for_changing_updated_at
70
+ @user.update_attributes!(updated_at: Time.now - 1.second)
71
+ old_updated_at = @user.updated_at
72
+ @user.stored_transaction_changes = nil
73
+
74
+ @user.updated_at = Time.now
75
+ @user.save!
76
+
77
+ assert_equal [old_updated_at, @user.updated_at], @user.stored_transaction_changes["updated_at"]
78
+ end
79
+
80
+ def test_transaction_changes_for_touch
81
+ @user.update_attributes!(updated_at: Time.now - 1.second)
82
+ old_updated_at = @user.updated_at
83
+ @user.stored_transaction_changes = nil
84
+
85
+ @user.touch
86
+
87
+ assert_equal [old_updated_at, @user.updated_at], @user.stored_transaction_changes["updated_at"]
88
+ end
89
+
90
+ def test_transaction_changes_doesnt_record_non_changes
91
+ @user.transaction do
92
+ @user.name = "Dylan"
93
+ @user.save!
94
+ end
95
+ refute @user.stored_transaction_changes["name"]
96
+ end
69
97
  end
metadata CHANGED
@@ -1,81 +1,61 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ar_transaction_changes
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dylan Thacker-Smith
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-04 00:00:00.000000000 Z
11
+ date: 2017-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.0'
20
- - - <
19
+ version: 4.2.4
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '6.0'
23
- - - '!='
24
- - !ruby/object:Gem::Version
25
- version: 4.2.3
26
23
  type: :runtime
27
24
  prerelease: false
28
25
  version_requirements: !ruby/object:Gem::Requirement
29
26
  requirements:
30
- - - '>='
27
+ - - ">="
31
28
  - !ruby/object:Gem::Version
32
- version: '3.0'
33
- - - <
29
+ version: 4.2.4
30
+ - - "<"
34
31
  - !ruby/object:Gem::Version
35
32
  version: '6.0'
36
- - - '!='
37
- - !ruby/object:Gem::Version
38
- version: 4.2.3
39
33
  - !ruby/object:Gem::Dependency
40
34
  name: rake
41
35
  requirement: !ruby/object:Gem::Requirement
42
36
  requirements:
43
- - - '>='
37
+ - - ">="
44
38
  - !ruby/object:Gem::Version
45
39
  version: '0'
46
40
  type: :development
47
41
  prerelease: false
48
42
  version_requirements: !ruby/object:Gem::Requirement
49
43
  requirements:
50
- - - '>='
44
+ - - ">="
51
45
  - !ruby/object:Gem::Version
52
46
  version: '0'
53
47
  - !ruby/object:Gem::Dependency
54
48
  name: mysql2
55
49
  requirement: !ruby/object:Gem::Requirement
56
50
  requirements:
57
- - - '>='
58
- - !ruby/object:Gem::Version
59
- version: '0'
60
- type: :development
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - '>='
65
- - !ruby/object:Gem::Version
66
- version: '0'
67
- - !ruby/object:Gem::Dependency
68
- name: appraisal
69
- requirement: !ruby/object:Gem::Requirement
70
- requirements:
71
- - - '>='
51
+ - - ">="
72
52
  - !ruby/object:Gem::Version
73
53
  version: '0'
74
54
  type: :development
75
55
  prerelease: false
76
56
  version_requirements: !ruby/object:Gem::Requirement
77
57
  requirements:
78
- - - '>='
58
+ - - ">="
79
59
  - !ruby/object:Gem::Version
80
60
  version: '0'
81
61
  description: Solves the problem of trying to get all the changes to an object during
@@ -86,19 +66,16 @@ executables: []
86
66
  extensions: []
87
67
  extra_rdoc_files: []
88
68
  files:
89
- - .gitignore
90
- - .travis.yml
91
- - Appraisals
69
+ - ".gitignore"
70
+ - ".travis.yml"
92
71
  - Gemfile
72
+ - Gemfile.rails42
73
+ - Gemfile.rails50
74
+ - Gemfile.rails51
93
75
  - LICENSE.txt
94
76
  - README.md
95
77
  - Rakefile
96
78
  - ar_transaction_changes.gemspec
97
- - gemfiles/rails_3_2.gemfile
98
- - gemfiles/rails_4_0.gemfile
99
- - gemfiles/rails_4_1.gemfile
100
- - gemfiles/rails_4_2.gemfile
101
- - gemfiles/rails_5.gemfile
102
79
  - lib/ar_transaction_changes.rb
103
80
  - lib/ar_transaction_changes/version.rb
104
81
  - test/database.yml.default
@@ -114,17 +91,17 @@ require_paths:
114
91
  - lib
115
92
  required_ruby_version: !ruby/object:Gem::Requirement
116
93
  requirements:
117
- - - '>='
94
+ - - ">="
118
95
  - !ruby/object:Gem::Version
119
96
  version: '0'
120
97
  required_rubygems_version: !ruby/object:Gem::Requirement
121
98
  requirements:
122
- - - '>='
99
+ - - ">="
123
100
  - !ruby/object:Gem::Version
124
101
  version: '0'
125
102
  requirements: []
126
103
  rubyforge_project:
127
- rubygems_version: 2.0.14.1
104
+ rubygems_version: 2.6.10
128
105
  signing_key:
129
106
  specification_version: 4
130
107
  summary: Store transaction changes for active record objects
data/Appraisals DELETED
@@ -1,22 +0,0 @@
1
- appraise "rails-3-2" do
2
- gem "rails", "~> 3.2.21"
3
- gem "mysql2", "~> 0.3.20"
4
- end
5
-
6
- appraise "rails-4-0" do
7
- gem "rails", "~> 4.0.12"
8
- gem "mysql2", "~> 0.3.20"
9
- end
10
-
11
- appraise "rails-4-1" do
12
- gem "rails", "~> 4.1.8"
13
- gem "mysql2", "~> 0.3.20"
14
- end
15
-
16
- appraise "rails-4-2" do
17
- gem "rails", "~> 4.2.0"
18
- end
19
-
20
- appraise "rails-5" do
21
- gem "rails", "~> 5.0.0.beta4"
22
- end
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 3.2.21"
6
- gem "mysql2", "~> 0.3.20"
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 4.0.12"
6
- gem "mysql2", "~> 0.3.20"
7
-
8
- gemspec :path => "../"
@@ -1,8 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 4.1.8"
6
- gem "mysql2", "~> 0.3.20"
7
-
8
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 4.2.0"
6
-
7
- gemspec :path => "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.0.0.beta4"
6
-
7
- gemspec :path => "../"