acts-as-taggable-on 3.2.3 → 3.2.5

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.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +8 -7
  3. data/Gemfile +0 -1
  4. data/acts-as-taggable-on.gemspec +6 -7
  5. data/gemfiles/activerecord_3.2.gemfile +0 -1
  6. data/gemfiles/activerecord_4.0.gemfile +0 -1
  7. data/gemfiles/activerecord_4.1.gemfile +0 -1
  8. data/gemfiles/activerecord_edge.gemfile +0 -1
  9. data/lib/acts-as-taggable-on.rb +28 -20
  10. data/lib/acts_as_taggable_on/tag_list.rb +13 -77
  11. data/lib/acts_as_taggable_on/tag_list_parser.rb +78 -0
  12. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/core.rb +14 -10
  13. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/ownership.rb +1 -1
  14. data/lib/acts_as_taggable_on/taggable.rb +7 -6
  15. data/lib/acts_as_taggable_on/utils.rb +2 -26
  16. data/lib/acts_as_taggable_on/version.rb +1 -1
  17. data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +1 -1
  18. data/spec/acts_as_taggable_on/acts_as_tagger_spec.rb +1 -0
  19. data/spec/acts_as_taggable_on/caching_spec.rb +1 -0
  20. data/spec/acts_as_taggable_on/related_spec.rb +1 -0
  21. data/spec/acts_as_taggable_on/single_table_inheritance_spec.rb +1 -0
  22. data/spec/acts_as_taggable_on/tag_list_parser_spec.rb +46 -0
  23. data/spec/acts_as_taggable_on/tag_list_spec.rb +3 -40
  24. data/spec/acts_as_taggable_on/tag_spec.rb +29 -35
  25. data/spec/acts_as_taggable_on/taggable_spec.rb +55 -55
  26. data/spec/acts_as_taggable_on/tagger_spec.rb +1 -0
  27. data/spec/acts_as_taggable_on/tagging_spec.rb +2 -1
  28. data/spec/acts_as_taggable_on/tags_helper_spec.rb +1 -0
  29. data/spec/acts_as_taggable_on/utils_spec.rb +1 -0
  30. data/spec/internal/app/models/cached_model_with_array.rb +1 -1
  31. data/spec/internal/app/models/models.rb +2 -2
  32. data/spec/internal/db/schema.rb +2 -2
  33. data/spec/spec_helper.rb +0 -1
  34. data/spec/support/0-helpers.rb +32 -0
  35. metadata +36 -47
  36. data/spec/schema.rb +0 -82
  37. /data/lib/acts_as_taggable_on/{acts_as_taggable_on/compatibility.rb → compatibility.rb} +0 -0
  38. /data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/cache.rb +0 -0
  39. /data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/collection.rb +0 -0
  40. /data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/dirty.rb +0 -0
  41. /data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/related.rb +0 -0
@@ -1,4 +1,5 @@
1
- # encoding: utf-8
1
+ # -*- encoding : utf-8 -*-
2
+
2
3
  require 'spec_helper'
3
4
 
4
5
  describe ActsAsTaggableOn::TagList do
@@ -7,9 +8,7 @@ describe ActsAsTaggableOn::TagList do
7
8
 
8
9
  it { should be_kind_of Array }
9
10
 
10
- it '#from should return empty array if empty array is passed' do
11
- expect(ActsAsTaggableOn::TagList.from([])).to be_empty
12
- end
11
+
13
12
 
14
13
  describe '#add' do
15
14
  it 'should be able to be add a new tag word' do
@@ -118,41 +117,5 @@ describe ActsAsTaggableOn::TagList do
118
117
 
119
118
  end
120
119
 
121
- describe 'Multiple Delimiter' do
122
- before do
123
- @old_delimiter = ActsAsTaggableOn.delimiter
124
- end
125
-
126
- after do
127
- ActsAsTaggableOn.delimiter = @old_delimiter
128
- end
129
-
130
- it 'should separate tags by delimiters' do
131
- ActsAsTaggableOn.delimiter = [',', ' ', '\|']
132
- tag_list = ActsAsTaggableOn::TagList.from 'cool, data|I have'
133
- expect(tag_list.to_s).to eq('cool, data, I, have')
134
- end
135
-
136
- it 'should escape quote' do
137
- ActsAsTaggableOn.delimiter = [',', ' ', '\|']
138
- tag_list = ActsAsTaggableOn::TagList.from "'I have'|cool, data"
139
- expect(tag_list.to_s).to eq('"I have", cool, data')
140
-
141
- tag_list = ActsAsTaggableOn::TagList.from '"I, have"|cool, data'
142
- expect(tag_list.to_s).to eq('"I, have", cool, data')
143
- end
144
-
145
- it 'should work for utf8 delimiter and long delimiter' do
146
- ActsAsTaggableOn.delimiter = [',', '的', '可能是']
147
- tag_list = ActsAsTaggableOn::TagList.from '我的东西可能是不见了,还好有备份'
148
- expect(tag_list.to_s).to eq('我, 东西, 不见了, 还好有备份')
149
- end
150
-
151
- it 'should work for multiple quoted tags' do
152
- ActsAsTaggableOn.delimiter = [',']
153
- tag_list = ActsAsTaggableOn::TagList.from '"Ruby Monsters","eat Katzenzungen"'
154
- expect(tag_list.to_s).to eq('Ruby Monsters, eat Katzenzungen')
155
- end
156
- end
157
120
 
158
121
  end
@@ -1,4 +1,4 @@
1
- # encoding: utf-8
1
+ # -*- encoding : utf-8 -*-
2
2
  require 'spec_helper'
3
3
  require 'db/migrate/2_add_missing_unique_indices.rb'
4
4
 
@@ -18,21 +18,19 @@ describe ActsAsTaggableOn::Tag do
18
18
 
19
19
 
20
20
  describe 'named like any' do
21
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
22
- context 'case insensitive collation and unique index on tag name' do
23
- before(:each) do
24
- ActsAsTaggableOn::Tag.create(name: 'Awesome')
25
- ActsAsTaggableOn::Tag.create(name: 'epic')
26
- end
27
-
28
- it 'should find both tags' do
29
- expect(ActsAsTaggableOn::Tag.named_like_any(%w(awesome epic)).count).to eq(2)
30
- end
21
+ context 'case insensitive collation and unique index on tag name', if: using_case_insensitive_collation? do
22
+ before(:each) do
23
+ ActsAsTaggableOn::Tag.create(name: 'Awesome')
24
+ ActsAsTaggableOn::Tag.create(name: 'epic')
25
+ end
26
+
27
+ it 'should find both tags' do
28
+ expect(ActsAsTaggableOn::Tag.named_like_any(%w(awesome epic)).count).to eq(2)
31
29
  end
32
30
  end
33
31
 
34
32
  context 'case insensitive collation without indexes or case sensitive collation with indexes' do
35
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
33
+ if using_case_insensitive_collation?
36
34
  include_context 'without unique index'
37
35
  end
38
36
 
@@ -69,28 +67,24 @@ describe ActsAsTaggableOn::Tag do
69
67
  end
70
68
  end
71
69
 
72
- unless ActsAsTaggableOn::Utils.using_sqlite?
73
- describe 'find or create by unicode name' do
74
- before(:each) do
75
- @tag.name = 'привет'
76
- @tag.save
77
- end
70
+ describe 'find or create by unicode name', unless: using_sqlite? do
71
+ before(:each) do
72
+ @tag.name = 'привет'
73
+ @tag.save
74
+ end
78
75
 
79
- it 'should find by name' do
80
- expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('привет')).to eq(@tag)
81
- end
76
+ it 'should find by name' do
77
+ expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('привет')).to eq(@tag)
78
+ end
82
79
 
83
- it 'should find by name case insensitive' do
84
- expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('ПРИВЕТ')).to eq(@tag)
85
- end
80
+ it 'should find by name case insensitive' do
81
+ expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('ПРИВЕТ')).to eq(@tag)
82
+ end
86
83
 
87
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
88
- it 'should find by name accent insensitive' do
89
- @tag.name = 'inupiat'
90
- @tag.save
91
- expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('Iñupiat')).to eq(@tag)
92
- end
93
- end
84
+ it 'should find by name accent insensitive', if: using_case_insensitive_collation? do
85
+ @tag.name = 'inupiat'
86
+ @tag.save
87
+ expect(ActsAsTaggableOn::Tag.find_or_create_with_like_by_name('Iñupiat')).to eq(@tag)
94
88
  end
95
89
  end
96
90
 
@@ -109,7 +103,7 @@ describe ActsAsTaggableOn::Tag do
109
103
  end
110
104
 
111
105
  context 'case sensitive' do
112
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
106
+ if using_case_insensitive_collation?
113
107
  include_context 'without unique index'
114
108
  end
115
109
 
@@ -128,7 +122,7 @@ describe ActsAsTaggableOn::Tag do
128
122
  end
129
123
 
130
124
  context 'case sensitive' do
131
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
125
+ if using_case_insensitive_collation?
132
126
  include_context 'without unique index'
133
127
  end
134
128
 
@@ -228,7 +222,7 @@ describe ActsAsTaggableOn::Tag do
228
222
  end
229
223
 
230
224
  context 'case sensitive' do
231
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
225
+ if using_case_insensitive_collation?
232
226
  include_context 'without unique index'
233
227
  end
234
228
 
@@ -242,7 +236,7 @@ describe ActsAsTaggableOn::Tag do
242
236
  end
243
237
 
244
238
  context 'case sensitive' do
245
- if ActsAsTaggableOn::Utils.using_case_insensitive_collation?
239
+ if using_case_insensitive_collation?
246
240
  include_context 'without unique index'
247
241
  end
248
242
 
@@ -208,6 +208,14 @@ describe 'Taggable' do
208
208
  expect(TaggableModel.tagged_with('ruby').group(:created_at).count.count).to eq(1)
209
209
  end
210
210
 
211
+ it 'can be used as scope' do
212
+ @taggable.skill_list = 'ruby'
213
+ @taggable.save
214
+ untaggable_model = @taggable.untaggable_models.create!(name:'foobar')
215
+ scope_tag = TaggableModel.tagged_with('ruby', any: 'distinct', order: 'taggable_models.name asc')
216
+ expect(UntaggableModel.joins(:taggable_model).merge(scope_tag).except(:select)).to eq([untaggable_model])
217
+ end
218
+
211
219
  it "shouldn't generate a query with DISTINCT by default" do
212
220
  @taggable.skill_list = 'ruby, rails, css'
213
221
  @taggable.save
@@ -255,16 +263,14 @@ describe 'Taggable' do
255
263
  expect(TaggableModel.select('distinct(taggable_models.id), taggable_models.*').joins(:untaggable_models).tagged_with(['rails', 'ruby'], :any => false).to_a.sort).to eq([bob, frank].sort)
256
264
  end
257
265
 
258
- unless ActsAsTaggableOn::Utils.using_sqlite?
259
- it 'should not care about case for unicode names' do
260
- ActsAsTaggableOn.strict_case_match = false
261
- TaggableModel.create(name: 'Anya', tag_list: 'ПРИВЕТ')
262
- TaggableModel.create(name: 'Igor', tag_list: 'привет')
263
- TaggableModel.create(name: 'Katia', tag_list: 'ПРИВЕТ')
266
+ it 'should not care about case for unicode names', unless: using_sqlite? do
267
+ ActsAsTaggableOn.strict_case_match = false
268
+ TaggableModel.create(name: 'Anya', tag_list: 'ПРИВЕТ')
269
+ TaggableModel.create(name: 'Igor', tag_list: 'привет')
270
+ TaggableModel.create(name: 'Katia', tag_list: 'ПРИВЕТ')
264
271
 
265
- expect(ActsAsTaggableOn::Tag.all.size).to eq(1)
266
- expect(TaggableModel.tagged_with('привет').to_a).to eq(TaggableModel.tagged_with('ПРИВЕТ').to_a)
267
- end
272
+ expect(ActsAsTaggableOn::Tag.all.size).to eq(1)
273
+ expect(TaggableModel.tagged_with('привет').to_a).to eq(TaggableModel.tagged_with('ПРИВЕТ').to_a)
268
274
  end
269
275
 
270
276
  context 'should be able to create and find tags in languages without capitalization :' do
@@ -586,28 +592,26 @@ describe 'Taggable' do
586
592
 
587
593
  end
588
594
 
589
- if ActsAsTaggableOn::Utils.supports_concurrency?
590
- xit 'should not duplicate tags added on different threads' do
591
- #TODO, try with more threads and fix deadlock
592
- thread_count = 4
593
- barrier = Barrier.new thread_count
594
-
595
- expect {
596
- thread_count.times.map do |idx|
597
- Thread.start do
598
- connor = TaggableModel.first_or_create(name: 'Connor')
599
- connor.tag_list = 'There, can, be, only, one'
600
- barrier.wait
601
- begin
602
- connor.save
603
- rescue ActsAsTaggableOn::DuplicateTagError
604
- # second save should succeed
605
- connor.save
606
- end
595
+ xit 'should not duplicate tags added on different threads', if: supports_concurrency?, skip: 'FIXME, Deadlocks in travis' do
596
+ #TODO, try with more threads and fix deadlock
597
+ thread_count = 4
598
+ barrier = Barrier.new thread_count
599
+
600
+ expect {
601
+ thread_count.times.map do |idx|
602
+ Thread.start do
603
+ connor = TaggableModel.first_or_create(name: 'Connor')
604
+ connor.tag_list = 'There, can, be, only, one'
605
+ barrier.wait
606
+ begin
607
+ connor.save
608
+ rescue ActsAsTaggableOn::DuplicateTagError
609
+ # second save should succeed
610
+ connor.save
607
611
  end
608
- end.map(&:join)
609
- }.to change(ActsAsTaggableOn::Tag, :count).by(5)
610
- end
612
+ end
613
+ end.map(&:join)
614
+ }.to change(ActsAsTaggableOn::Tag, :count).by(5)
611
615
  end
612
616
  end
613
617
 
@@ -853,34 +857,30 @@ describe 'Taggable' do
853
857
  end
854
858
  end
855
859
 
856
- if ActsAsTaggableOn::Utils.using_postgresql?
857
- if ActsAsTaggableOn::Utils.postgresql_support_json?
858
- describe 'Taggable model with json columns' do
859
- before(:each) do
860
- @taggable = TaggableModelWithJson.new(:name => 'Bob Jones')
861
- @taggables = [@taggable, TaggableModelWithJson.new(:name => 'John Doe')]
862
- end
860
+ describe 'Taggable model with json columns', if: postgresql_support_json? do
861
+ before(:each) do
862
+ @taggable = TaggableModelWithJson.new(:name => 'Bob Jones')
863
+ @taggables = [@taggable, TaggableModelWithJson.new(:name => 'John Doe')]
864
+ end
863
865
 
864
- it 'should be able to find by tag with context' do
865
- @taggable.skill_list = 'ruby, rails, css'
866
- @taggable.tag_list = 'bob, charlie'
867
- @taggable.save
866
+ it 'should be able to find by tag with context' do
867
+ @taggable.skill_list = 'ruby, rails, css'
868
+ @taggable.tag_list = 'bob, charlie'
869
+ @taggable.save
868
870
 
869
- expect(TaggableModelWithJson.tagged_with('ruby').first).to eq(@taggable)
870
- expect(TaggableModelWithJson.tagged_with('ruby, css').first).to eq(@taggable)
871
- expect(TaggableModelWithJson.tagged_with('bob', :on => :skills).first).to_not eq(@taggable)
872
- expect(TaggableModelWithJson.tagged_with('bob', :on => :tags).first).to eq(@taggable)
873
- end
871
+ expect(TaggableModelWithJson.tagged_with('ruby').first).to eq(@taggable)
872
+ expect(TaggableModelWithJson.tagged_with('ruby, css').first).to eq(@taggable)
873
+ expect(TaggableModelWithJson.tagged_with('bob', :on => :skills).first).to_not eq(@taggable)
874
+ expect(TaggableModelWithJson.tagged_with('bob', :on => :tags).first).to eq(@taggable)
875
+ end
874
876
 
875
- it 'should be able to find tagged with any tag' do
876
- bob = TaggableModelWithJson.create(:name => 'Bob', :tag_list => 'fitter, happier, more productive', :skill_list => 'ruby, rails, css')
877
- frank = TaggableModelWithJson.create(:name => 'Frank', :tag_list => 'weaker, depressed, inefficient', :skill_list => 'ruby, rails, css')
878
- steve = TaggableModelWithJson.create(:name => 'Steve', :tag_list => 'fitter, happier, more productive', :skill_list => 'c++, java, ruby')
877
+ it 'should be able to find tagged with any tag' do
878
+ bob = TaggableModelWithJson.create(:name => 'Bob', :tag_list => 'fitter, happier, more productive', :skill_list => 'ruby, rails, css')
879
+ frank = TaggableModelWithJson.create(:name => 'Frank', :tag_list => 'weaker, depressed, inefficient', :skill_list => 'ruby, rails, css')
880
+ steve = TaggableModelWithJson.create(:name => 'Steve', :tag_list => 'fitter, happier, more productive', :skill_list => 'c++, java, ruby')
879
881
 
880
- expect(TaggableModelWithJson.tagged_with(%w(ruby java), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, frank, steve])
881
- expect(TaggableModelWithJson.tagged_with(%w(c++ fitter), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, steve])
882
- expect(TaggableModelWithJson.tagged_with(%w(depressed css), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, frank])
883
- end
884
- end
882
+ expect(TaggableModelWithJson.tagged_with(%w(ruby java), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, frank, steve])
883
+ expect(TaggableModelWithJson.tagged_with(%w(c++ fitter), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, steve])
884
+ expect(TaggableModelWithJson.tagged_with(%w(depressed css), :order => 'taggable_model_with_jsons.name', :any => true).to_a).to eq([bob, frank])
885
885
  end
886
886
  end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe 'Tagger' do
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe ActsAsTaggableOn::Tagging do
@@ -48,4 +49,4 @@ describe ActsAsTaggableOn::Tagging do
48
49
 
49
50
  end
50
51
 
51
- end
52
+ end
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe ActsAsTaggableOn::TagsHelper do
@@ -1,3 +1,4 @@
1
+ # -*- encoding : utf-8 -*-
1
2
  require 'spec_helper'
2
3
 
3
4
  describe ActsAsTaggableOn::Utils do
@@ -1,4 +1,4 @@
1
- if ActsAsTaggableOn::Utils.using_postgresql?
1
+ if using_postgresql?
2
2
  class CachedModelWithArray < ActiveRecord::Base
3
3
  acts_as_taggable
4
4
  end
@@ -77,11 +77,11 @@ class OrderedTaggableModel < ActiveRecord::Base
77
77
  acts_as_ordered_taggable_on :colours
78
78
  end
79
79
 
80
- if ActsAsTaggableOn::Utils.using_postgresql?
80
+ if using_postgresql?
81
81
  class CachedModelWithArray < ActiveRecord::Base
82
82
  acts_as_taggable
83
83
  end
84
- if ActsAsTaggableOn::Utils.postgresql_support_json?
84
+ if postgresql_support_json?
85
85
  class TaggableModelWithJson < ActiveRecord::Base
86
86
  acts_as_taggable
87
87
  acts_as_taggable_on :skills
@@ -76,7 +76,7 @@ ActiveRecord::Schema.define version: 0 do
76
76
 
77
77
 
78
78
  # Special cases for postgresql
79
- if ActsAsTaggableOn::Utils.using_postgresql?
79
+ if using_postgresql?
80
80
 
81
81
  create_table :other_cached_with_array_models, force: true do |t|
82
82
  t.column :name, :string
@@ -86,7 +86,7 @@ ActiveRecord::Schema.define version: 0 do
86
86
  t.column :cached_glass_list, :string, array: true
87
87
  end
88
88
 
89
- if ActsAsTaggableOn::Utils.postgresql_support_json?
89
+ if postgresql_support_json?
90
90
  create_table :taggable_model_with_jsons, :force => true do |t|
91
91
  t.column :name, :string
92
92
  t.column :type, :string
data/spec/spec_helper.rb CHANGED
@@ -6,7 +6,6 @@ require File.expand_path('../../lib/acts-as-taggable-on', __FILE__)
6
6
  I18n.enforce_available_locales = true
7
7
  require 'rails'
8
8
  require 'rspec/its'
9
- require 'ammeter/init' # <= You are next
10
9
  require 'barrier'
11
10
  require 'database_cleaner'
12
11
 
@@ -0,0 +1,32 @@
1
+ def using_sqlite?
2
+ ActsAsTaggableOn::Utils.connection && ActsAsTaggableOn::Utils.connection.adapter_name == 'SQLite'
3
+ end
4
+
5
+ def supports_concurrency?
6
+ !using_sqlite?
7
+ end
8
+
9
+ def using_postgresql?
10
+ ActsAsTaggableOn::Utils.using_postgresql?
11
+ end
12
+
13
+ def postgresql_version
14
+ if using_postgresql?
15
+ ActsAsTaggableOn::Utils.connection.execute('SHOW SERVER_VERSION').first['server_version'].to_f
16
+ else
17
+ 0.0
18
+ end
19
+ end
20
+
21
+ def postgresql_support_json?
22
+ postgresql_version >= 9.2
23
+ end
24
+
25
+
26
+ def using_mysql?
27
+ ActsAsTaggableOn::Utils.using_mysql?
28
+ end
29
+
30
+ def using_case_insensitive_collation?
31
+ using_mysql? && ActsAsTaggableOn::Utils.connection.collation =~ /_ci\Z/
32
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts-as-taggable-on
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.2.3
4
+ version: 3.2.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Bleigh
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-05-16 00:00:00.000000000 Z
12
+ date: 2014-05-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -69,16 +69,16 @@ dependencies:
69
69
  name: mysql2
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">="
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: 0.3.7
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">="
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0'
81
+ version: 0.3.7
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: pg
84
84
  requirement: !ruby/object:Gem::Requirement
@@ -99,84 +99,70 @@ dependencies:
99
99
  requirements:
100
100
  - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: 3.0.0.beta1
102
+ version: 3.0.0.beta
103
103
  type: :development
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 3.0.0.beta1
109
+ version: 3.0.0.beta
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: rspec-its
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - "~>"
114
+ - - ">="
115
115
  - !ruby/object:Gem::Version
116
- version: '1.0'
116
+ version: '0'
117
117
  type: :development
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - "~>"
121
+ - - ">="
122
122
  - !ruby/object:Gem::Version
123
- version: '1.0'
123
+ version: '0'
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: rspec
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
- - - '='
129
- - !ruby/object:Gem::Version
130
- version: 3.0.0.beta2
131
- type: :development
132
- prerelease: false
133
- version_requirements: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - '='
136
- - !ruby/object:Gem::Version
137
- version: 3.0.0.beta2
138
- - !ruby/object:Gem::Dependency
139
- name: ammeter
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
128
+ - - ">="
143
129
  - !ruby/object:Gem::Version
144
- version: '1.0'
130
+ version: '0'
145
131
  type: :development
146
132
  prerelease: false
147
133
  version_requirements: !ruby/object:Gem::Requirement
148
134
  requirements:
149
- - - "~>"
135
+ - - ">="
150
136
  - !ruby/object:Gem::Version
151
- version: '1.0'
137
+ version: '0'
152
138
  - !ruby/object:Gem::Dependency
153
139
  name: barrier
154
140
  requirement: !ruby/object:Gem::Requirement
155
141
  requirements:
156
- - - "~>"
142
+ - - ">="
157
143
  - !ruby/object:Gem::Version
158
- version: '1.0'
144
+ version: '0'
159
145
  type: :development
160
146
  prerelease: false
161
147
  version_requirements: !ruby/object:Gem::Requirement
162
148
  requirements:
163
- - - "~>"
149
+ - - ">="
164
150
  - !ruby/object:Gem::Version
165
- version: '1.0'
151
+ version: '0'
166
152
  - !ruby/object:Gem::Dependency
167
153
  name: database_cleaner
168
154
  requirement: !ruby/object:Gem::Requirement
169
155
  requirements:
170
- - - "~>"
156
+ - - ">="
171
157
  - !ruby/object:Gem::Version
172
- version: '1.2'
158
+ version: '0'
173
159
  type: :development
174
160
  prerelease: false
175
161
  version_requirements: !ruby/object:Gem::Requirement
176
162
  requirements:
177
- - - "~>"
163
+ - - ">="
178
164
  - !ruby/object:Gem::Version
179
- version: '1.2'
165
+ version: '0'
180
166
  description: With ActsAsTaggableOn, you can tag a single model on several contexts,
181
167
  such as skills, interests, and awards. It also provides other advanced functionality.
182
168
  email:
@@ -208,17 +194,18 @@ files:
208
194
  - gemfiles/activerecord_edge.gemfile
209
195
  - lib/acts-as-taggable-on.rb
210
196
  - lib/acts_as_taggable_on.rb
211
- - lib/acts_as_taggable_on/acts_as_taggable_on/cache.rb
212
- - lib/acts_as_taggable_on/acts_as_taggable_on/collection.rb
213
- - lib/acts_as_taggable_on/acts_as_taggable_on/compatibility.rb
214
- - lib/acts_as_taggable_on/acts_as_taggable_on/core.rb
215
- - lib/acts_as_taggable_on/acts_as_taggable_on/dirty.rb
216
- - lib/acts_as_taggable_on/acts_as_taggable_on/ownership.rb
217
- - lib/acts_as_taggable_on/acts_as_taggable_on/related.rb
197
+ - lib/acts_as_taggable_on/compatibility.rb
218
198
  - lib/acts_as_taggable_on/engine.rb
219
199
  - lib/acts_as_taggable_on/tag.rb
220
200
  - lib/acts_as_taggable_on/tag_list.rb
201
+ - lib/acts_as_taggable_on/tag_list_parser.rb
221
202
  - lib/acts_as_taggable_on/taggable.rb
203
+ - lib/acts_as_taggable_on/taggable/cache.rb
204
+ - lib/acts_as_taggable_on/taggable/collection.rb
205
+ - lib/acts_as_taggable_on/taggable/core.rb
206
+ - lib/acts_as_taggable_on/taggable/dirty.rb
207
+ - lib/acts_as_taggable_on/taggable/ownership.rb
208
+ - lib/acts_as_taggable_on/taggable/related.rb
222
209
  - lib/acts_as_taggable_on/tagger.rb
223
210
  - lib/acts_as_taggable_on/tagging.rb
224
211
  - lib/acts_as_taggable_on/tags_helper.rb
@@ -229,6 +216,7 @@ files:
229
216
  - spec/acts_as_taggable_on/caching_spec.rb
230
217
  - spec/acts_as_taggable_on/related_spec.rb
231
218
  - spec/acts_as_taggable_on/single_table_inheritance_spec.rb
219
+ - spec/acts_as_taggable_on/tag_list_parser_spec.rb
232
220
  - spec/acts_as_taggable_on/tag_list_spec.rb
233
221
  - spec/acts_as_taggable_on/tag_spec.rb
234
222
  - spec/acts_as_taggable_on/taggable_spec.rb
@@ -253,8 +241,8 @@ files:
253
241
  - spec/internal/app/models/user.rb
254
242
  - spec/internal/config/database.yml.sample
255
243
  - spec/internal/db/schema.rb
256
- - spec/schema.rb
257
244
  - spec/spec_helper.rb
245
+ - spec/support/0-helpers.rb
258
246
  - spec/support/array.rb
259
247
  - spec/support/database.rb
260
248
  - spec/support/database_cleaner.rb
@@ -301,6 +289,7 @@ test_files:
301
289
  - spec/acts_as_taggable_on/caching_spec.rb
302
290
  - spec/acts_as_taggable_on/related_spec.rb
303
291
  - spec/acts_as_taggable_on/single_table_inheritance_spec.rb
292
+ - spec/acts_as_taggable_on/tag_list_parser_spec.rb
304
293
  - spec/acts_as_taggable_on/tag_list_spec.rb
305
294
  - spec/acts_as_taggable_on/tag_spec.rb
306
295
  - spec/acts_as_taggable_on/taggable_spec.rb
@@ -325,8 +314,8 @@ test_files:
325
314
  - spec/internal/app/models/user.rb
326
315
  - spec/internal/config/database.yml.sample
327
316
  - spec/internal/db/schema.rb
328
- - spec/schema.rb
329
317
  - spec/spec_helper.rb
318
+ - spec/support/0-helpers.rb
330
319
  - spec/support/array.rb
331
320
  - spec/support/database.rb
332
321
  - spec/support/database_cleaner.rb