touch 0.0.1 → 0.1.0

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: 641e3fba3666224d044667ea2b78f2dc2df1d3e8
4
- data.tar.gz: 05e12cee1964ff61671ab8fa1fe1c8a0c144148f
3
+ metadata.gz: bd7439aac65a0d5479bc1f8fab6f05c2a378d0a6
4
+ data.tar.gz: 34cdf5d5b369ee9c42dac977822d88ff24e8bef5
5
5
  SHA512:
6
- metadata.gz: 8623b9707ec162816d5cde98f87423ebce8aedc01ec5e3c931036fd5aef83d12df3c1779881eaad13481625b3b5d3b50f4036cc39bc5e3218516f0811ea68297
7
- data.tar.gz: d8e4e4067703b56292a0bf997661b5ee4be534eecffc0e729c04de82d88a7248a9fd4be4c05da24bf0fa4820bd175eaeb0f20e11f6f8e91903114ed906a50709
6
+ metadata.gz: c2811601e64be85cddf38202c2454f67343acc6de03dc457c589f70883fd0254bb4946d2a1a096de4046c0ba9ec7bce1e9535d59e5494714c769ffbd9c29628b
7
+ data.tar.gz: e73660aa7765002e40d60dbae355ae9168986caf59233cb0dbb820c715df1f060c614f78ba334b23f8b855a37bbc5622b47170ca5ceca904f5c78c992ba26b99
data/.gitignore CHANGED
@@ -14,3 +14,4 @@ spec/reports
14
14
  test/tmp
15
15
  test/version_tmp
16
16
  tmp
17
+ *.lock
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+ sudo: false
3
+ cache: bundler
4
+ notifications:
5
+ email: false
6
+ rvm:
7
+ - 2.3.0
8
+ - '2.2'
9
+ env:
10
+ global:
11
+ secure: Y6h1xkzJFjwnm0Dzn0EpNKIKyXdzyGPws4rXq7Z/VGnu0tjwBpW9/aM2ecgNjknU/8EAan4fMOG2EZPr2qzbjOR/ZVijdhsIAA0PCTlVSdTqEnthUvaJHJg8DeTcfAN0Rj/XJ/EiTXrYJWIFUYGUsrnku/0MRoSxRYL8Kp8Q+fY=
data/README.md CHANGED
@@ -1,7 +1,17 @@
1
1
  # Touch
2
2
 
3
+ [![Travis-CI](https://travis-ci.org/fnando/touch.png)](https://travis-ci.org/fnando/touch)
4
+ [![Code Climate](https://codeclimate.com/github/fnando/touch/badges/gpa.svg)](https://codeclimate.com/github/fnando/touch)
5
+ [![Test Coverage](https://codeclimate.com/github/fnando/touch/badges/coverage.svg)](https://codeclimate.com/github/fnando/touch/coverage)
6
+ [![Gem](https://img.shields.io/gem/v/touch.svg)](https://rubygems.org/gems/touch)
7
+ [![Gem](https://img.shields.io/gem/dt/touch.svg)](https://rubygems.org/gems/touch)
8
+
3
9
  Touch a parent's collection on ActiveRecord.
4
10
 
11
+ ## Why not just using `belongs_to :assoc, touch: true`?
12
+
13
+ Well, you'll have a fine control for each association, since `touch: true` updates the `updated_at` magic field.
14
+
5
15
  ## Installation
6
16
 
7
17
  Add this line to your application's Gemfile:
data/Rakefile CHANGED
@@ -1 +1,10 @@
1
1
  require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.test_files = FileList["test/**/*_test.rb"]
7
+ t.warning = false
8
+ end
9
+
10
+ task default: :test
@@ -16,6 +16,7 @@ module Touch
16
16
  end
17
17
 
18
18
  private
19
+
19
20
  def add_collection_touch_for(association_name, event)
20
21
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
21
22
  def collection_touch_event_for_#{association_name}_on_#{event}
@@ -1,3 +1,3 @@
1
1
  module Touch
2
- VERSION = "0.0.1"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -1,13 +1,15 @@
1
+ ActiveRecord::Migration.verbose = false
2
+
1
3
  ActiveRecord::Schema.define(:version => 0) do
2
4
  create_table :users do |t|
3
5
  t.datetime :tasks_updated_at
4
- t.timestamps
6
+ t.timestamps null: false
5
7
  end
6
8
 
7
9
  create_table :tasks do |t|
8
10
  t.string :title
9
11
  t.belongs_to :user
10
- t.timestamps
12
+ t.timestamps null: false
11
13
  end
12
14
  end
13
15
 
@@ -0,0 +1,16 @@
1
+ require "codeclimate-test-reporter"
2
+ CodeClimate::TestReporter.start
3
+
4
+ require "bundler/setup"
5
+ Bundler.require
6
+
7
+ require "minitest/utils"
8
+ require "minitest/autorun"
9
+ require "touch"
10
+
11
+ ActiveRecord::Base.establish_connection(
12
+ adapter: "sqlite3",
13
+ database: ":memory:"
14
+ )
15
+
16
+ require_relative "support/models"
@@ -0,0 +1,22 @@
1
+ require "test_helper"
2
+
3
+ class CreateTest < Minitest::Test
4
+ let(:user) { User.create! }
5
+ let(:task) { user.tasks.create! }
6
+
7
+ test "updates the parent's collection field" do
8
+ Task.touch(:user)
9
+ tasks_updated_at = user.tasks_updated_at
10
+ user.tasks.create!
11
+
12
+ refute_equal tasks_updated_at, user.reload.tasks_updated_at
13
+ end
14
+
15
+ test "updates the parent record" do
16
+ Task.touch(:user)
17
+ updated_at = user.updated_at
18
+ user.tasks.create!
19
+
20
+ refute_equal updated_at, user.reload.updated_at
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require "test_helper"
2
+
3
+ class DestroyTest < Minitest::Test
4
+ let(:user) { User.create! }
5
+ let(:task) { user.tasks.create! }
6
+
7
+ test "updates the parent's collection field" do
8
+ Task.touch(:user)
9
+ tasks_updated_at = user.reload.tasks_updated_at
10
+ task.destroy!
11
+
12
+ refute_equal tasks_updated_at, user.reload.tasks_updated_at
13
+ end
14
+
15
+ test "updates the parent record" do
16
+ Task.touch(:user)
17
+ updated_at = user.reload.updated_at
18
+ task.destroy!
19
+
20
+ refute_equal updated_at, user.reload.updated_at
21
+ end
22
+ end
@@ -0,0 +1,22 @@
1
+ require "test_helper"
2
+
3
+ class UpdateTest < Minitest::Test
4
+ let(:user) { User.create! }
5
+ let(:task) { user.tasks.create! }
6
+
7
+ test "updates the parent's collection field" do
8
+ Task.touch(:user)
9
+ tasks_updated_at = user.reload.tasks_updated_at
10
+ task.update_attributes title: "Some title"
11
+
12
+ refute_equal tasks_updated_at, user.reload.tasks_updated_at
13
+ end
14
+
15
+ test "updates the parent record" do
16
+ Task.touch(:user)
17
+ updated_at = user.updated_at
18
+ task.update_attributes title: "Some title"
19
+
20
+ refute_equal updated_at, user.reload.updated_at
21
+ end
22
+ end
@@ -18,7 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.add_dependency "activerecord"
19
19
  spec.add_development_dependency "bundler"
20
20
  spec.add_development_dependency "rake"
21
- spec.add_development_dependency "rspec"
21
+ spec.add_development_dependency "minitest-utils"
22
22
  spec.add_development_dependency "pry-meta"
23
23
  spec.add_development_dependency "sqlite3"
24
+ spec.add_development_dependency "codeclimate-test-reporter"
24
25
  end
metadata CHANGED
@@ -1,97 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: touch
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nando Vieira
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-07-22 00:00:00.000000000 Z
11
+ date: 2016-04-11 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
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rake
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: minitest-utils
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry-meta
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: sqlite3
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: codeclimate-test-reporter
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
95
109
  - !ruby/object:Gem::Version
96
110
  version: '0'
97
111
  description: Touch a parent's collection on ActiveRecord.
@@ -101,18 +115,19 @@ executables: []
101
115
  extensions: []
102
116
  extra_rdoc_files: []
103
117
  files:
104
- - .gitignore
105
- - .rspec
118
+ - ".gitignore"
119
+ - ".travis.yml"
106
120
  - Gemfile
107
- - Gemfile.lock
108
121
  - LICENSE.txt
109
122
  - README.md
110
123
  - Rakefile
111
124
  - lib/touch.rb
112
125
  - lib/touch/version.rb
113
- - spec/spec_helper.rb
114
- - spec/support/models.rb
115
- - spec/touch_spec.rb
126
+ - test/support/models.rb
127
+ - test/test_helper.rb
128
+ - test/touch/create_test.rb
129
+ - test/touch/destroy_test.rb
130
+ - test/touch/update_test.rb
116
131
  - touch.gemspec
117
132
  homepage: http://github.com/fnando/touch
118
133
  licenses:
@@ -124,21 +139,23 @@ require_paths:
124
139
  - lib
125
140
  required_ruby_version: !ruby/object:Gem::Requirement
126
141
  requirements:
127
- - - '>='
142
+ - - ">="
128
143
  - !ruby/object:Gem::Version
129
144
  version: '0'
130
145
  required_rubygems_version: !ruby/object:Gem::Requirement
131
146
  requirements:
132
- - - '>='
147
+ - - ">="
133
148
  - !ruby/object:Gem::Version
134
149
  version: '0'
135
150
  requirements: []
136
151
  rubyforge_project:
137
- rubygems_version: 2.0.3
152
+ rubygems_version: 2.5.1
138
153
  signing_key:
139
154
  specification_version: 4
140
155
  summary: Touch a parent's collection on ActiveRecord.
141
156
  test_files:
142
- - spec/spec_helper.rb
143
- - spec/support/models.rb
144
- - spec/touch_spec.rb
157
+ - test/support/models.rb
158
+ - test/test_helper.rb
159
+ - test/touch/create_test.rb
160
+ - test/touch/destroy_test.rb
161
+ - test/touch/update_test.rb
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --color
2
- --format progress
@@ -1,73 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- touch (0.0.1)
5
- activerecord
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- activemodel (4.0.0)
11
- activesupport (= 4.0.0)
12
- builder (~> 3.1.0)
13
- activerecord (4.0.0)
14
- activemodel (= 4.0.0)
15
- activerecord-deprecated_finders (~> 1.0.2)
16
- activesupport (= 4.0.0)
17
- arel (~> 4.0.0)
18
- activerecord-deprecated_finders (1.0.3)
19
- activesupport (4.0.0)
20
- i18n (~> 0.6, >= 0.6.4)
21
- minitest (~> 4.2)
22
- multi_json (~> 1.3)
23
- thread_safe (~> 0.1)
24
- tzinfo (~> 0.3.37)
25
- arel (4.0.0)
26
- atomic (1.1.10)
27
- awesome_print (1.1.0)
28
- builder (3.1.4)
29
- coderay (1.0.9)
30
- diff-lcs (1.2.4)
31
- i18n (0.6.4)
32
- method_source (0.8.1)
33
- minitest (4.7.5)
34
- multi_json (1.7.7)
35
- pry (0.9.12.2)
36
- coderay (~> 1.0.5)
37
- method_source (~> 0.8)
38
- slop (~> 3.4)
39
- pry-meta (0.0.5)
40
- awesome_print
41
- pry
42
- pry-nav
43
- pry-remote
44
- pry-nav (0.2.3)
45
- pry (~> 0.9.10)
46
- pry-remote (0.1.7)
47
- pry (~> 0.9)
48
- slop (~> 3.0)
49
- rake (10.1.0)
50
- rspec (2.14.1)
51
- rspec-core (~> 2.14.0)
52
- rspec-expectations (~> 2.14.0)
53
- rspec-mocks (~> 2.14.0)
54
- rspec-core (2.14.4)
55
- rspec-expectations (2.14.0)
56
- diff-lcs (>= 1.1.3, < 2.0)
57
- rspec-mocks (2.14.1)
58
- slop (3.4.5)
59
- sqlite3 (1.3.7)
60
- thread_safe (0.1.0)
61
- atomic
62
- tzinfo (0.3.37)
63
-
64
- PLATFORMS
65
- ruby
66
-
67
- DEPENDENCIES
68
- bundler
69
- pry-meta
70
- rake
71
- rspec
72
- sqlite3
73
- touch!
@@ -1,18 +0,0 @@
1
- require "bundler/setup"
2
- Bundler.require
3
-
4
- require "touch"
5
-
6
- ActiveRecord::Base.establish_connection(
7
- adapter: "sqlite3",
8
- database: ":memory:"
9
- )
10
-
11
- require "support/models"
12
-
13
- RSpec.configure do |config|
14
- config.treat_symbols_as_metadata_keys_with_true_values = true
15
- config.run_all_when_everything_filtered = true
16
- config.filter_run :focus
17
- config.order = "random"
18
- end
@@ -1,60 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Touch do
4
- let(:user) { User.create! }
5
- let(:task) { user.tasks.create! }
6
-
7
- context "on create" do
8
- it "updates the parent's collection field" do
9
- Task.touch(:user)
10
-
11
- expect {
12
- user.tasks.create!
13
- }.to change { user.reload.tasks_updated_at }
14
- end
15
-
16
- it "updates the parent record" do
17
- Task.touch(:user)
18
-
19
- expect {
20
- user.tasks.create!
21
- }.to change { user.reload.updated_at }
22
- end
23
- end
24
-
25
- context "on update" do
26
- it "updates the parent's collection field" do
27
- Task.touch(:user)
28
-
29
- expect {
30
- task.update_attributes title: "Some title"
31
- }.to change { user.reload.tasks_updated_at }
32
- end
33
-
34
- it "updates the parent record" do
35
- Task.touch(:user)
36
-
37
- expect {
38
- task.update_attributes title: "Some title"
39
- }.to change { user.reload.updated_at }
40
- end
41
- end
42
-
43
- context "on destroy" do
44
- it "updates the parent's collection field" do
45
- Task.touch(:user)
46
-
47
- expect {
48
- task.destroy!
49
- }.to change { user.reload.tasks_updated_at }
50
- end
51
-
52
- it "updates the parent record" do
53
- Task.touch(:user)
54
-
55
- expect {
56
- task.destroy!
57
- }.to change { user.reload.updated_at }
58
- end
59
- end
60
- end