acts-as-taggable-on 3.2.1 → 3.3.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +21 -1
  3. data/Appraisals +0 -4
  4. data/CHANGELOG.md +27 -15
  5. data/README.md +18 -11
  6. data/acts-as-taggable-on.gemspec +0 -2
  7. data/db/migrate/4_add_missing_taggable_index.rb +9 -0
  8. data/gemfiles/activerecord_3.2.gemfile +0 -1
  9. data/gemfiles/activerecord_4.0.gemfile +0 -1
  10. data/gemfiles/activerecord_4.1.gemfile +0 -1
  11. data/gemfiles/activerecord_edge.gemfile +0 -1
  12. data/lib/acts-as-taggable-on.rb +28 -20
  13. data/lib/acts_as_taggable_on/tag.rb +1 -1
  14. data/lib/acts_as_taggable_on/tag_list.rb +15 -78
  15. data/lib/acts_as_taggable_on/tag_list_parser.rb +78 -0
  16. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/cache.rb +1 -0
  17. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/collection.rb +2 -0
  18. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/core.rb +68 -44
  19. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/ownership.rb +1 -1
  20. data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/related.rb +6 -6
  21. data/lib/acts_as_taggable_on/taggable.rb +7 -8
  22. data/lib/acts_as_taggable_on/tagging.rb +7 -1
  23. data/lib/acts_as_taggable_on/tags_helper.rb +2 -2
  24. data/lib/acts_as_taggable_on/utils.rb +26 -50
  25. data/lib/acts_as_taggable_on/version.rb +1 -1
  26. data/spec/acts_as_taggable_on/acts_as_taggable_on_spec.rb +1 -1
  27. data/spec/acts_as_taggable_on/acts_as_tagger_spec.rb +1 -0
  28. data/spec/acts_as_taggable_on/caching_spec.rb +1 -0
  29. data/spec/acts_as_taggable_on/related_spec.rb +1 -0
  30. data/spec/acts_as_taggable_on/single_table_inheritance_spec.rb +1 -0
  31. data/spec/acts_as_taggable_on/tag_list_parser_spec.rb +46 -0
  32. data/spec/acts_as_taggable_on/tag_list_spec.rb +3 -40
  33. data/spec/acts_as_taggable_on/tag_spec.rb +34 -38
  34. data/spec/acts_as_taggable_on/taggable/dirty_spec.rb +127 -0
  35. data/spec/acts_as_taggable_on/taggable_spec.rb +84 -164
  36. data/spec/acts_as_taggable_on/tagger_spec.rb +1 -1
  37. data/spec/acts_as_taggable_on/tagging_spec.rb +37 -1
  38. data/spec/acts_as_taggable_on/tags_helper_spec.rb +1 -0
  39. data/spec/acts_as_taggable_on/utils_spec.rb +6 -11
  40. data/spec/internal/app/models/cached_model_with_array.rb +1 -1
  41. data/spec/internal/app/models/models.rb +2 -2
  42. data/spec/internal/db/schema.rb +2 -2
  43. data/spec/spec_helper.rb +0 -1
  44. data/spec/support/0-helpers.rb +32 -0
  45. data/spec/support/database_cleaner.rb +4 -0
  46. metadata +17 -47
  47. data/spec/bm.rb +0 -52
  48. data/spec/schema.rb +0 -82
  49. /data/lib/acts_as_taggable_on/{acts_as_taggable_on/compatibility.rb → compatibility.rb} +0 -0
  50. /data/lib/acts_as_taggable_on/{acts_as_taggable_on → taggable}/dirty.rb +0 -0
@@ -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 self.
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
@@ -6,6 +6,10 @@ RSpec.configure do |config|
6
6
  DatabaseCleaner.clean
7
7
  end
8
8
 
9
+ config.after(:suite) do
10
+ DatabaseCleaner.clean
11
+ end
12
+
9
13
  config.before(:each) do
10
14
  DatabaseCleaner.start
11
15
  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.1
4
+ version: 3.3.0
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-06 00:00:00.000000000 Z
12
+ date: 2014-07-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -31,26 +31,6 @@ dependencies:
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '5'
34
- - !ruby/object:Gem::Dependency
35
- name: actionpack
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '3'
41
- - - "<"
42
- - !ruby/object:Gem::Version
43
- version: '5'
44
- type: :runtime
45
- prerelease: false
46
- version_requirements: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: '3'
51
- - - "<"
52
- - !ruby/object:Gem::Version
53
- version: '5'
54
34
  - !ruby/object:Gem::Dependency
55
35
  name: sqlite3
56
36
  requirement: !ruby/object:Gem::Requirement
@@ -135,20 +115,6 @@ dependencies:
135
115
  - - ">="
136
116
  - !ruby/object:Gem::Version
137
117
  version: '0'
138
- - !ruby/object:Gem::Dependency
139
- name: ammeter
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - ">="
143
- - !ruby/object:Gem::Version
144
- version: '0'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - ">="
150
- - !ruby/object:Gem::Version
151
- version: '0'
152
118
  - !ruby/object:Gem::Dependency
153
119
  name: barrier
154
120
  requirement: !ruby/object:Gem::Requirement
@@ -202,23 +168,25 @@ files:
202
168
  - db/migrate/1_acts_as_taggable_on_migration.rb
203
169
  - db/migrate/2_add_missing_unique_indices.rb
204
170
  - db/migrate/3_add_taggings_counter_cache_to_tags.rb
171
+ - db/migrate/4_add_missing_taggable_index.rb
205
172
  - gemfiles/activerecord_3.2.gemfile
206
173
  - gemfiles/activerecord_4.0.gemfile
207
174
  - gemfiles/activerecord_4.1.gemfile
208
175
  - gemfiles/activerecord_edge.gemfile
209
176
  - lib/acts-as-taggable-on.rb
210
177
  - 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
178
+ - lib/acts_as_taggable_on/compatibility.rb
218
179
  - lib/acts_as_taggable_on/engine.rb
219
180
  - lib/acts_as_taggable_on/tag.rb
220
181
  - lib/acts_as_taggable_on/tag_list.rb
182
+ - lib/acts_as_taggable_on/tag_list_parser.rb
221
183
  - lib/acts_as_taggable_on/taggable.rb
184
+ - lib/acts_as_taggable_on/taggable/cache.rb
185
+ - lib/acts_as_taggable_on/taggable/collection.rb
186
+ - lib/acts_as_taggable_on/taggable/core.rb
187
+ - lib/acts_as_taggable_on/taggable/dirty.rb
188
+ - lib/acts_as_taggable_on/taggable/ownership.rb
189
+ - lib/acts_as_taggable_on/taggable/related.rb
222
190
  - lib/acts_as_taggable_on/tagger.rb
223
191
  - lib/acts_as_taggable_on/tagging.rb
224
192
  - lib/acts_as_taggable_on/tags_helper.rb
@@ -229,14 +197,15 @@ files:
229
197
  - spec/acts_as_taggable_on/caching_spec.rb
230
198
  - spec/acts_as_taggable_on/related_spec.rb
231
199
  - spec/acts_as_taggable_on/single_table_inheritance_spec.rb
200
+ - spec/acts_as_taggable_on/tag_list_parser_spec.rb
232
201
  - spec/acts_as_taggable_on/tag_list_spec.rb
233
202
  - spec/acts_as_taggable_on/tag_spec.rb
203
+ - spec/acts_as_taggable_on/taggable/dirty_spec.rb
234
204
  - spec/acts_as_taggable_on/taggable_spec.rb
235
205
  - spec/acts_as_taggable_on/tagger_spec.rb
236
206
  - spec/acts_as_taggable_on/tagging_spec.rb
237
207
  - spec/acts_as_taggable_on/tags_helper_spec.rb
238
208
  - spec/acts_as_taggable_on/utils_spec.rb
239
- - spec/bm.rb
240
209
  - spec/internal/app/models/altered_inheriting_taggable_model.rb
241
210
  - spec/internal/app/models/cached_model.rb
242
211
  - spec/internal/app/models/cached_model_with_array.rb
@@ -254,8 +223,8 @@ files:
254
223
  - spec/internal/app/models/user.rb
255
224
  - spec/internal/config/database.yml.sample
256
225
  - spec/internal/db/schema.rb
257
- - spec/schema.rb
258
226
  - spec/spec_helper.rb
227
+ - spec/support/0-helpers.rb
259
228
  - spec/support/array.rb
260
229
  - spec/support/database.rb
261
230
  - spec/support/database_cleaner.rb
@@ -302,14 +271,15 @@ test_files:
302
271
  - spec/acts_as_taggable_on/caching_spec.rb
303
272
  - spec/acts_as_taggable_on/related_spec.rb
304
273
  - spec/acts_as_taggable_on/single_table_inheritance_spec.rb
274
+ - spec/acts_as_taggable_on/tag_list_parser_spec.rb
305
275
  - spec/acts_as_taggable_on/tag_list_spec.rb
306
276
  - spec/acts_as_taggable_on/tag_spec.rb
277
+ - spec/acts_as_taggable_on/taggable/dirty_spec.rb
307
278
  - spec/acts_as_taggable_on/taggable_spec.rb
308
279
  - spec/acts_as_taggable_on/tagger_spec.rb
309
280
  - spec/acts_as_taggable_on/tagging_spec.rb
310
281
  - spec/acts_as_taggable_on/tags_helper_spec.rb
311
282
  - spec/acts_as_taggable_on/utils_spec.rb
312
- - spec/bm.rb
313
283
  - spec/internal/app/models/altered_inheriting_taggable_model.rb
314
284
  - spec/internal/app/models/cached_model.rb
315
285
  - spec/internal/app/models/cached_model_with_array.rb
@@ -327,8 +297,8 @@ test_files:
327
297
  - spec/internal/app/models/user.rb
328
298
  - spec/internal/config/database.yml.sample
329
299
  - spec/internal/db/schema.rb
330
- - spec/schema.rb
331
300
  - spec/spec_helper.rb
301
+ - spec/support/0-helpers.rb
332
302
  - spec/support/array.rb
333
303
  - spec/support/database.rb
334
304
  - spec/support/database_cleaner.rb
data/spec/bm.rb DELETED
@@ -1,52 +0,0 @@
1
- require 'active_record'
2
- require 'action_view'
3
- require File.expand_path('../../lib/acts-as-taggable-on', __FILE__)
4
-
5
- if defined?(ActiveRecord::Acts::TaggableOn)
6
- ActiveRecord::Base.send :include, ActiveRecord::Acts::TaggableOn
7
- ActiveRecord::Base.send :include, ActiveRecord::Acts::Tagger
8
- ActionView::Base.send :include, TagsHelper if defined?(ActionView::Base)
9
- end
10
-
11
- TEST_DATABASE_FILE = File.join(File.dirname(__FILE__), '..', 'test.sqlite3')
12
- File.unlink(TEST_DATABASE_FILE) if File.exist?(TEST_DATABASE_FILE)
13
- ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => TEST_DATABASE_FILE
14
-
15
- ActiveRecord::Base.silence do
16
- ActiveRecord::Migration.verbose = false
17
- ActiveRecord::Schema.define :version => 0 do
18
- create_table "taggings", :force => true do |t|
19
- t.integer "tag_id", :limit => 11
20
- t.integer "taggable_id", :limit => 11
21
- t.string "taggable_type"
22
- t.string "context"
23
- t.datetime "created_at"
24
- t.integer "tagger_id", :limit => 11
25
- t.string "tagger_type"
26
- end
27
-
28
- add_index "taggings", ["tag_id"], :name => "index_taggings_on_tag_id"
29
- add_index "taggings", ["taggable_id", "taggable_type", "context"], :name => "index_taggings_on_taggable_id_and_taggable_type_and_context"
30
-
31
- create_table "tags", :force => true do |t|
32
- t.string "name"
33
- end
34
-
35
- create_table :taggable_models, :force => true do |t|
36
- t.column :name, :string
37
- t.column :type, :string
38
- t.column :cached_tag_list, :string
39
- end
40
- end
41
-
42
- class TaggableModel < ActiveRecord::Base
43
- acts_as_taggable
44
- acts_as_taggable_on :languages
45
- acts_as_taggable_on :skills
46
- acts_as_taggable_on :needs, :offerings
47
- end
48
- end
49
-
50
- puts Benchmark.measure {
51
- 1000.times { TaggableModel.create :tag_list => "awesome, epic, neat" }
52
- }
data/spec/schema.rb DELETED
@@ -1,82 +0,0 @@
1
- ActiveRecord::Schema.define :version => 0 do
2
- create_table :tags, :force => true do |t|
3
- t.string :name
4
- t.integer :taggings_count, :default => 0
5
- end
6
- add_index "tags", ["name"], name: "index_tags_on_name", unique: true
7
-
8
- create_table :taggings, :force => true do |t|
9
- t.references :tag
10
-
11
- # You should make sure that the column created is
12
- # long enough to store the required class names.
13
- t.references :taggable, :polymorphic => true
14
- t.references :tagger, :polymorphic => true
15
-
16
- # Limit is created to prevent MySQL error on index
17
- # length for MyISAM table type: http://bit.ly/vgW2Ql
18
- t.string :context, :limit => 128
19
-
20
- t.datetime :created_at
21
- end
22
- add_index "taggings",
23
- ["tag_id", "taggable_id", "taggable_type", "context", "tagger_id", "tagger_type"],
24
- unique: true, name: "taggings_idx"
25
-
26
- # above copied from
27
- # generators/acts_as_taggable_on/migration/migration_generator
28
-
29
- create_table :taggable_models, :force => true do |t|
30
- t.column :name, :string
31
- t.column :type, :string
32
- end
33
-
34
- create_table :non_standard_id_taggable_models, :primary_key => "an_id", :force => true do |t|
35
- t.column :name, :string
36
- t.column :type, :string
37
- end
38
-
39
- create_table :untaggable_models, :force => true do |t|
40
- t.column :taggable_model_id, :integer
41
- t.column :name, :string
42
- end
43
-
44
- create_table :cached_models, :force => true do |t|
45
- t.column :name, :string
46
- t.column :type, :string
47
- t.column :cached_tag_list, :string
48
- end
49
-
50
- create_table :other_cached_models, :force => true do |t|
51
- t.column :name, :string
52
- t.column :type, :string
53
- t.column :cached_language_list, :string
54
- t.column :cached_status_list, :string
55
- t.column :cached_glass_list, :string
56
- end
57
-
58
- create_table :users, :force => true do |t|
59
- t.column :name, :string
60
- end
61
-
62
- create_table :other_taggable_models, :force => true do |t|
63
- t.column :name, :string
64
- t.column :type, :string
65
- end
66
-
67
- create_table :ordered_taggable_models, :force => true do |t|
68
- t.column :name, :string
69
- t.column :type, :string
70
- end
71
-
72
- create_table :taggable_model_with_jsons, :force => true do |t|
73
- t.column :name, :string
74
- t.column :type, :string
75
- if self.connection.adapter_name == 'PostgreSQL' && self.connection.execute("SHOW SERVER_VERSION").first["server_version"].to_f >= 9.2
76
- type = :json
77
- else
78
- type = :string
79
- end
80
- t.column :opts, type
81
- end
82
- end