polytag 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/.DS_Store +0 -0
  2. data/.pryrc +27 -0
  3. data/.rspec +3 -1
  4. data/README.md +26 -4
  5. data/lib/.DS_Store +0 -0
  6. data/lib/generators/polytag/.DS_Store +0 -0
  7. data/lib/generators/polytag/install/.DS_Store +0 -0
  8. data/lib/generators/polytag/install/templates/create_polytag_tables.rb +25 -11
  9. data/lib/polytag.rb +221 -58
  10. data/lib/polytag/concerns/tag_owner.rb +31 -0
  11. data/lib/polytag/concerns/tag_owner/association_extensions.rb +15 -0
  12. data/lib/polytag/concerns/tag_owner/association_extensions/owned_tags.rb +16 -0
  13. data/lib/polytag/concerns/tag_owner/class_helpers.rb +25 -0
  14. data/lib/polytag/concerns/tag_owner/model_helpers.rb +78 -0
  15. data/lib/polytag/concerns/taggable.rb +24 -0
  16. data/lib/polytag/concerns/taggable/association_extensions.rb +15 -0
  17. data/lib/polytag/concerns/taggable/class_helpers.rb +16 -0
  18. data/lib/polytag/concerns/taggable/model_helpers.rb +60 -0
  19. data/lib/polytag/connection.rb +27 -0
  20. data/lib/polytag/exceptions.rb +7 -0
  21. data/lib/polytag/tag.rb +6 -24
  22. data/lib/polytag/tag_group.rb +8 -46
  23. data/lib/polytag/version.rb +1 -1
  24. data/polytag.gemspec +7 -3
  25. data/spec/spec_helper.rb +15 -10
  26. data/spec/specs/owner_spec.rb +104 -0
  27. data/spec/specs/taggable_with_owner_spec.rb +120 -0
  28. data/spec/specs/taggable_without_owner_spec.rb +59 -0
  29. data/spec/support/active_record.rb +6 -6
  30. data/spec/support/owner.rb +1 -1
  31. data/spec/support/taggable.rb +3 -0
  32. metadata +115 -46
  33. checksums.yaml +0 -7
  34. data/circle.yml +0 -3
  35. data/lib/polytag/tag_group/owner.rb +0 -17
  36. data/lib/polytag/tag_relation.rb +0 -15
  37. data/spec/specs/polytag_querying_spec.rb +0 -56
  38. data/spec/specs/polytag_test_taggable_four_spec.rb +0 -54
  39. data/spec/specs/polytag_test_taggable_one_spec.rb +0 -47
  40. data/spec/specs/polytag_test_taggable_three_spec.rb +0 -51
  41. data/spec/specs/polytag_test_taggable_two_spec.rb +0 -51
  42. data/spec/support/test_taggable_four.rb +0 -7
  43. data/spec/support/test_taggable_one.rb +0 -3
  44. data/spec/support/test_taggable_three.rb +0 -8
  45. data/spec/support/test_taggable_two.rb +0 -7
@@ -3,8 +3,10 @@ GEM_DIR = File.dirname(SPEC_DIR)
3
3
 
4
4
  # Load dependencies
5
5
  require 'rspec/rails/extensions/active_record/base'
6
+ require 'active_support'
6
7
  require 'active_record'
7
8
  require 'awesome_print'
9
+ require 'database_cleaner'
8
10
 
9
11
  # Load in the support for AR
10
12
  require 'support/active_record'
@@ -14,10 +16,7 @@ require 'polytag'
14
16
 
15
17
  # The test models
16
18
  require 'support/owner'
17
- require 'support/test_taggable_one'
18
- require 'support/test_taggable_two'
19
- require 'support/test_taggable_three'
20
- require 'support/test_taggable_four'
19
+ require 'support/taggable'
21
20
 
22
21
  # This file was generated by the `rspec --init` command. Conventionally, all
23
22
  # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
@@ -31,12 +30,18 @@ RSpec.configure do |config|
31
30
  config.run_all_when_everything_filtered = true
32
31
  config.filter_run :focus
33
32
 
34
- # Handle ActiveRecord transactions
35
- config.around do |example|
36
- ActiveRecord::Base.transaction do
37
- example.run
38
- raise ActiveRecord::Rollback
39
- end
33
+ # Use DatabaseCleaner for testing
34
+ config.before(:suite) do
35
+ DatabaseCleaner.strategy = :transaction
36
+ DatabaseCleaner.clean_with(:truncation)
37
+ end
38
+
39
+ config.before(:each) do
40
+ DatabaseCleaner.start
41
+ end
42
+
43
+ config.after(:each) do
44
+ DatabaseCleaner.clean
40
45
  end
41
46
 
42
47
  # Run specs in random order to surface order dependencies. If you find an
@@ -0,0 +1,104 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Owner ::" do
4
+ let!(:time) { Time.now.to_i }
5
+ let(:owner) { Owner.create(name: "test_#{time}") }
6
+
7
+ before(:each) do
8
+ owner.tag_group.add_tag(:pizza)
9
+ owner.tag_group.add_tag(:apple, "Fruit")
10
+ end
11
+
12
+ it "Should create a model of Owner" do
13
+ owner.name.should eq("test_#{time}")
14
+ owner.should be_a(Owner)
15
+ end
16
+
17
+ context "Tag Groups ::" do
18
+ it "Should find the \"default\" group" do
19
+ tag_group = owner.tag_groups.default
20
+ tag_group.should be_a(::Polytag::TagGroup)
21
+ tag_group.owner.should eq(owner)
22
+ tag_group.name.should eq("default")
23
+ end
24
+
25
+ it "Should find the \"Fruit\" tag group" do
26
+ tag_group = owner.tag_groups.get("Fruit")
27
+ tag_group.should be_a(::Polytag::TagGroup)
28
+ tag_group.owner.should eq(owner)
29
+ tag_group.name.should eq("Fruit")
30
+ end
31
+
32
+ it "Should allow a tag group with the same name on other owners" do
33
+ other_owner = Owner.create
34
+
35
+ # Create a tag (which also creates a tag group)
36
+ other_owner.tag_group.add_tag(:sub)
37
+
38
+ tag_group = owner.tag_groups.default
39
+ tag_group.should be_a(::Polytag::TagGroup)
40
+
41
+ other_tag_group = other_owner.tag_groups.default
42
+ other_tag_group.should be_a(::Polytag::TagGroup)
43
+
44
+ tag_group.should_not eq(other_tag_group)
45
+
46
+ tag_group.owner.should eq(owner)
47
+ tag_group.name.should eq("default")
48
+ tag_group.tags.map(&:name).should eq(['pizza'])
49
+
50
+ other_tag_group.owner.should eq(other_owner)
51
+ other_tag_group.name.should eq("default")
52
+ other_tag_group.tags.map(&:name).should eq(['sub'])
53
+ end
54
+ end
55
+
56
+ context "Owned Tags ::" do
57
+ it "Should find the tag in the \"default\" group" do
58
+ tag_group = owner.tag_groups.default
59
+ tag_group.should be_a(::Polytag::TagGroup)
60
+ tag_group.owner.should eq(owner)
61
+ tag_group.tags.map(&:name).should eq(['pizza'])
62
+ end
63
+
64
+ it "Should find the tag in the \"Fruit\" group" do
65
+ tag_group = owner.tag_groups.get("Fruit")
66
+ tag_group.should be_a(::Polytag::TagGroup)
67
+ tag_group.owner.should eq(owner)
68
+ tag_group.tags.map(&:name).should eq(['apple'])
69
+ end
70
+
71
+ # Adding this spec because it was a problem in testing
72
+ it "Should allow tags with the same name in other groups" do
73
+ owner.tag_group.add_tag(:apple)
74
+
75
+ tag_group = owner.tag_groups.get("Fruit")
76
+ tag_group.should be_a(::Polytag::TagGroup)
77
+ tag_group.owner.should eq(owner)
78
+ tag_group.tags.map(&:name).should eq(['apple'])
79
+ end
80
+ end
81
+
82
+ context "Finder Methods ::" do
83
+ it "Should find the owner by Tag Group" do
84
+ @owners = Owner.has_tag_group('default')
85
+ end
86
+
87
+ it "Should find the owner by Tag without Tag Group (even if the tag is in a group)" do
88
+ @owners = Owner.has_tag('apple')
89
+ end
90
+
91
+ it "Should find the owner by Tag with Tag Group" do
92
+ @owners = Owner.has_tag('apple', 'Fruit')
93
+ end
94
+
95
+ after(:each) do
96
+ @owners.should include(owner)
97
+ @owners.first.tag_group.exist?('Fruit').should be_true
98
+ @owners.first.tag_group.exist?('default').should be_true
99
+ @owners.first.tag_group.owns_tag?('pizza').should be_true
100
+ @owners.first.tag_group.owns_tag?('apple').should be_false
101
+ @owners.first.tag_group.owns_tag?('apple', 'Fruit').should be_true
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,120 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Taggable With Owner ::" do
4
+ let!(:time) { Time.now.to_i }
5
+ let(:owner) { Owner.create }
6
+ let(:taggable) { Taggable.create(name: "test_#{time}") }
7
+
8
+ before(:each) do
9
+ taggable.tag.add(:apple, tag_group_owner: owner)
10
+ end
11
+
12
+ it "Should create a model of Taggable" do
13
+ taggable.name.should eq("test_#{time}")
14
+ taggable.should be_a(Taggable)
15
+ end
16
+
17
+ context "Add a tag ::" do
18
+ it "Should find the tag with the right owner and group" do
19
+ tags = taggable.tags(true)
20
+
21
+ tags.size.should eq(1)
22
+ tags.first.name.should eq('apple')
23
+ tags.first.tag_group.name.should eq('default')
24
+ tags.first.tag_group.owner.should eq(owner)
25
+ end
26
+
27
+ it "Should find the tag via has_tag?" do
28
+ taggable.tag.has_tag?(:apple, tag_group_owner: owner).should be_true
29
+ end
30
+
31
+ context "Add another tag ::" do
32
+ before(:each) do
33
+ taggable.tag.add(:peach)
34
+ end
35
+
36
+ it "Should not conflict with model only tags" do
37
+ taggable.tag.add(:apple)
38
+ tags = taggable.tags(true)
39
+
40
+ # Peach, Apple, Apple (where one of the apples is in a tag group)
41
+ tags.size.should be(3)
42
+ tags.map(&:name).should eq(['apple', 'peach', 'apple'])
43
+ end
44
+
45
+ it "Should find only one due to a owner constraint" do
46
+ tags = taggable.tags(true)
47
+ tags.size.should eq(2) # Should see both
48
+
49
+ # Get only the tags attached to the owner
50
+ tags = tags.tag_group(tag_group_owner: owner)
51
+ tags.size.should eq(1) # Now the constainst is applied we should see less.
52
+ tags.map(&:name).should eq(['apple'])
53
+ tags.first.tag_group.owner.should eq(owner)
54
+ tags.first.tag_group.should eq(owner.tag_groups.default)
55
+ end
56
+
57
+ it "and find both tags" do
58
+ tags = taggable.tags(true)
59
+ tags.size.should eq(2)
60
+ tags.map(&:name).should eq(['apple', 'peach'])
61
+ end
62
+
63
+ it "and it Should not delete the original without an owner constraint" do
64
+ taggable.tag.del(:apple)
65
+
66
+ tags = taggable.tags(true)
67
+ tags.size.should eq(2)
68
+ tags.map(&:name).should eq(['apple', 'peach'])
69
+ end
70
+
71
+ it "and it Should delete the original with an owner constraint" do
72
+ taggable.tag.del(:apple, tag_group_owner: owner)
73
+
74
+ tags = taggable.tags(true)
75
+ tags.size.should eq(1)
76
+ tags.map(&:name).should eq(['peach'])
77
+ end
78
+ end
79
+ end
80
+
81
+ it "Should find model by tag" do
82
+ taggables = Taggable.has_tag(:apple, tag_group_owner: owner)
83
+ taggables.size.should eq(1)
84
+ taggables.should include(taggable)
85
+ tags = taggables.first.tags
86
+ tags.size.should eq(1)
87
+ tags.first.name.should eq('apple')
88
+ end
89
+
90
+ context "Many2Many2Many Connection Hopping ::" do
91
+ it "Should find Owner by Tag" do
92
+ tag = taggable.tag.get(:apple, tag_group: :default)
93
+ tag.should be_a(Polytag::Connection)
94
+ tag.name.should eq('apple')
95
+ tag.tag_group.name.should eq('default')
96
+ tag.owner.should eq(owner)
97
+ end
98
+
99
+ it "Should find Tag by Owner" do
100
+ tag = owner.owned_tags.get(:apple).first
101
+ tag.should be_a(Polytag::Connection)
102
+ tag.name.should eq('apple')
103
+ tag.tag_group.name.should eq('default')
104
+ tag.owner.should eq(owner)
105
+ end
106
+
107
+ it "Should find Tag by Owner wiht a Group" do
108
+ taggable.tag.add(:orange, tag_group: "Fruit", tag_group_owner: owner)
109
+
110
+ tags = owner.owned_tags.get(:orange, tag_group: "Fruit")
111
+ tags.size.should eq(1)
112
+
113
+ tag = tags.first
114
+ tag.should be_a(Polytag::Connection)
115
+ tag.name.should eq('orange')
116
+ tag.tag_group.name.should eq('Fruit')
117
+ tag.owner.should eq(owner)
118
+ end
119
+ end
120
+ end
@@ -0,0 +1,59 @@
1
+ require 'spec_helper'
2
+
3
+ describe "Taggable Without Owner ::" do
4
+ let!(:time) { Time.now.to_i }
5
+ let(:taggable) { Taggable.create(name: "test_#{time}") }
6
+
7
+ before(:each) do
8
+ taggable.tag.new(:apple)
9
+ end
10
+
11
+ it "Should create a model of Taggable" do
12
+ taggable.name.should eq("test_#{time}")
13
+ taggable.should be_a(Taggable)
14
+ end
15
+
16
+ context "Add a tag ::" do
17
+ it "Should have a tag" do
18
+ tags = taggable.tags(true)
19
+
20
+ tags.size.should eq(1)
21
+ tags.first.name.should eq('apple')
22
+ end
23
+
24
+ it "Should be able to find tag via has_tag?" do
25
+ taggable.tag.has_tag?(:apple).should be_true
26
+ end
27
+
28
+ it "Should delete the tag" do
29
+ taggable.tag.del(:apple)
30
+ taggable.tags(true).should be_empty
31
+ end
32
+
33
+ it "Should add an another tag" do
34
+ taggable.tag.new(:peach)
35
+ tags = taggable.tags(true)
36
+
37
+ tags.size.should eq(2)
38
+ tags.map(&:name).should eq(['apple', 'peach'])
39
+ end
40
+
41
+ it "Should add an another tag and delete the original" do
42
+ taggable.tag.new(:peach)
43
+ taggable.tag.del(:apple)
44
+ tags = taggable.tags(true)
45
+
46
+ tags.size.should eq(1)
47
+ tags.first.name.should eq('peach')
48
+ end
49
+ end
50
+
51
+ it "Should find model by tag" do
52
+ taggables = Taggable.has_tag(:apple)
53
+ taggables.size.should eq(1)
54
+ taggables.should include(taggable)
55
+ tags = taggables.first.tags
56
+ tags.size.should eq(1)
57
+ tags.first.name.should eq('apple')
58
+ end
59
+ end
@@ -1,6 +1,8 @@
1
1
  ActiveRecord::Base.establish_connection adapter: "sqlite3", database: ":memory:"
2
- # ActiveRecord::Base.connection.disable_query_cache!
2
+
3
+ # require 'logger'
3
4
  # ActiveRecord::Base.logger = Logger.new(STDOUT)
5
+ # ActiveRecord::Base.connection.disable_query_cache!
4
6
 
5
7
  # Where is the migration file
6
8
  migration_path = 'lib/generators/polytag/install/templates'
@@ -10,11 +12,9 @@ require(migration_file)
10
12
  # Run the migration file
11
13
  CreatePolytagTables.up
12
14
 
13
- [:ones, :twos, :threes, :fours].each do |table|
14
- ActiveRecord::Migration.create_table "test_taggable_#{table}" do |t|
15
- t.string :name
16
- t.timestamps
17
- end
15
+ ActiveRecord::Migration.create_table :taggables do |t|
16
+ t.string :name
17
+ t.timestamps
18
18
  end
19
19
 
20
20
  ActiveRecord::Migration.create_table :owners do |t|
@@ -1,3 +1,3 @@
1
1
  class Owner < ActiveRecord::Base
2
- include Polytag::TagGroup::Owner
2
+ include Polytag::Concerns::TagOwner
3
3
  end
@@ -0,0 +1,3 @@
1
+ class Taggable < ActiveRecord::Base
2
+ include Polytag::Concerns::Taggable
3
+ end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polytag
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Kelly Becker
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-10-14 00:00:00.000000000 Z
12
+ date: 2013-11-21 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,106 +22,169 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
26
29
  version: '1.3'
27
30
  - !ruby/object:Gem::Dependency
28
- name: rake
31
+ name: awesome_print
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: database_cleaner
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
39
60
  - !ruby/object:Gem::Version
40
61
  version: '0'
41
62
  - !ruby/object:Gem::Dependency
42
63
  name: rspec
43
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
44
66
  requirements:
45
- - - '>='
67
+ - - ! '>='
46
68
  - !ruby/object:Gem::Version
47
69
  version: '0'
48
70
  type: :development
49
71
  prerelease: false
50
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
51
74
  requirements:
52
- - - '>='
75
+ - - ! '>='
53
76
  - !ruby/object:Gem::Version
54
77
  version: '0'
55
78
  - !ruby/object:Gem::Dependency
56
79
  name: rspec-rails
57
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
58
82
  requirements:
59
- - - '>='
83
+ - - ! '>='
60
84
  - !ruby/object:Gem::Version
61
85
  version: '0'
62
86
  type: :development
63
87
  prerelease: false
64
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
65
90
  requirements:
66
- - - '>='
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: fuubar
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
67
108
  - !ruby/object:Gem::Version
68
109
  version: '0'
69
110
  - !ruby/object:Gem::Dependency
70
111
  name: sqlite3
71
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
72
114
  requirements:
73
- - - '>='
115
+ - - ! '>='
74
116
  - !ruby/object:Gem::Version
75
117
  version: '0'
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
79
122
  requirements:
80
- - - '>='
123
+ - - ! '>='
81
124
  - !ruby/object:Gem::Version
82
125
  version: '0'
83
126
  - !ruby/object:Gem::Dependency
84
- name: awesome_print
127
+ name: rake
85
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
86
130
  requirements:
87
- - - '>='
131
+ - - ! '>='
88
132
  - !ruby/object:Gem::Version
89
133
  version: '0'
90
134
  type: :development
91
135
  prerelease: false
92
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
93
138
  requirements:
94
- - - '>='
139
+ - - ! '>='
95
140
  - !ruby/object:Gem::Version
96
141
  version: '0'
97
142
  - !ruby/object:Gem::Dependency
98
- name: activerecord
143
+ name: pry
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: activesupport
99
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
100
162
  requirements:
101
- - - '>='
163
+ - - ! '>='
102
164
  - !ruby/object:Gem::Version
103
165
  version: 3.2.13
104
166
  type: :runtime
105
167
  prerelease: false
106
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
107
170
  requirements:
108
- - - '>='
171
+ - - ! '>='
109
172
  - !ruby/object:Gem::Version
110
173
  version: 3.2.13
111
174
  - !ruby/object:Gem::Dependency
112
- name: activesupport
175
+ name: activerecord
113
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
114
178
  requirements:
115
- - - '>='
179
+ - - ! '>='
116
180
  - !ruby/object:Gem::Version
117
181
  version: 3.2.13
118
182
  type: :runtime
119
183
  prerelease: false
120
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
121
186
  requirements:
122
- - - '>='
187
+ - - ! '>='
123
188
  - !ruby/object:Gem::Version
124
189
  version: 3.2.13
125
190
  description: Provides really easy tagging for rails and ActiveRecord models
@@ -129,69 +194,73 @@ executables: []
129
194
  extensions: []
130
195
  extra_rdoc_files: []
131
196
  files:
197
+ - .DS_Store
132
198
  - .gitignore
199
+ - .pryrc
133
200
  - .rspec
134
201
  - Gemfile
135
202
  - LICENSE.txt
136
203
  - README.md
137
204
  - Rakefile
138
- - circle.yml
205
+ - lib/.DS_Store
206
+ - lib/generators/polytag/.DS_Store
207
+ - lib/generators/polytag/install/.DS_Store
139
208
  - lib/generators/polytag/install/install_generator.rb
140
209
  - lib/generators/polytag/install/templates/create_polytag_tables.rb
141
210
  - lib/polytag.rb
211
+ - lib/polytag/concerns/tag_owner.rb
212
+ - lib/polytag/concerns/tag_owner/association_extensions.rb
213
+ - lib/polytag/concerns/tag_owner/association_extensions/owned_tags.rb
214
+ - lib/polytag/concerns/tag_owner/class_helpers.rb
215
+ - lib/polytag/concerns/tag_owner/model_helpers.rb
216
+ - lib/polytag/concerns/taggable.rb
217
+ - lib/polytag/concerns/taggable/association_extensions.rb
218
+ - lib/polytag/concerns/taggable/class_helpers.rb
219
+ - lib/polytag/concerns/taggable/model_helpers.rb
220
+ - lib/polytag/connection.rb
221
+ - lib/polytag/exceptions.rb
142
222
  - lib/polytag/tag.rb
143
223
  - lib/polytag/tag_group.rb
144
- - lib/polytag/tag_group/owner.rb
145
- - lib/polytag/tag_relation.rb
146
224
  - lib/polytag/version.rb
147
225
  - polytag.gemspec
148
226
  - spec/spec_helper.rb
149
- - spec/specs/polytag_querying_spec.rb
150
- - spec/specs/polytag_test_taggable_four_spec.rb
151
- - spec/specs/polytag_test_taggable_one_spec.rb
152
- - spec/specs/polytag_test_taggable_three_spec.rb
153
- - spec/specs/polytag_test_taggable_two_spec.rb
227
+ - spec/specs/owner_spec.rb
228
+ - spec/specs/taggable_with_owner_spec.rb
229
+ - spec/specs/taggable_without_owner_spec.rb
154
230
  - spec/support/active_record.rb
155
231
  - spec/support/owner.rb
156
- - spec/support/test_taggable_four.rb
157
- - spec/support/test_taggable_one.rb
158
- - spec/support/test_taggable_three.rb
159
- - spec/support/test_taggable_two.rb
232
+ - spec/support/taggable.rb
160
233
  homepage: http://github.com/JIFFinc/polytag
161
234
  licenses:
162
235
  - MIT
163
- metadata: {}
164
236
  post_install_message:
165
237
  rdoc_options: []
166
238
  require_paths:
167
239
  - lib
168
240
  required_ruby_version: !ruby/object:Gem::Requirement
241
+ none: false
169
242
  requirements:
170
- - - '>='
243
+ - - ! '>='
171
244
  - !ruby/object:Gem::Version
172
245
  version: '0'
173
246
  required_rubygems_version: !ruby/object:Gem::Requirement
247
+ none: false
174
248
  requirements:
175
- - - '>='
249
+ - - ! '>='
176
250
  - !ruby/object:Gem::Version
177
251
  version: '0'
178
252
  requirements: []
179
253
  rubyforge_project:
180
- rubygems_version: 2.0.3
254
+ rubygems_version: 1.8.23
181
255
  signing_key:
182
- specification_version: 4
256
+ specification_version: 3
183
257
  summary: Provides really easy tagging for rails and ActiveRecord models
184
258
  test_files:
185
259
  - spec/spec_helper.rb
186
- - spec/specs/polytag_querying_spec.rb
187
- - spec/specs/polytag_test_taggable_four_spec.rb
188
- - spec/specs/polytag_test_taggable_one_spec.rb
189
- - spec/specs/polytag_test_taggable_three_spec.rb
190
- - spec/specs/polytag_test_taggable_two_spec.rb
260
+ - spec/specs/owner_spec.rb
261
+ - spec/specs/taggable_with_owner_spec.rb
262
+ - spec/specs/taggable_without_owner_spec.rb
191
263
  - spec/support/active_record.rb
192
264
  - spec/support/owner.rb
193
- - spec/support/test_taggable_four.rb
194
- - spec/support/test_taggable_one.rb
195
- - spec/support/test_taggable_three.rb
196
- - spec/support/test_taggable_two.rb
265
+ - spec/support/taggable.rb
197
266
  has_rdoc: