acts-as-taggable-array-on 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d7015d2509416188e45cc5c3cf1504167a311a96
4
- data.tar.gz: 96d19346e51a44233258a2b150a9b3eeb80c6633
3
+ metadata.gz: 571322f949adda3190c96102b3f5c5884aab591a
4
+ data.tar.gz: 35675504cfeb7e6bba4bb2616da65403abe91904
5
5
  SHA512:
6
- metadata.gz: c81cef96b1bb5a2c418760dcafd67f68161708cd73bfebdcc89eebdb512bc162e6500c56298e7c5f671d8cf2f2b8d696cfefe9263c7776271dcfcac49ff4fec8
7
- data.tar.gz: 269914c72de99a97d53ec456b1071e8d43ebeb031c608b102919d77e33dd06757d6ffadee571949672dd700719a94ecb8e9898a434fcc8c5998fbcad24edd6d1
6
+ metadata.gz: cdf1581fb54a72305b93c52c09ce192bef5bb7b88dd6647a5e2be90e32a6c094a643c4475a5de44224c94ef894314f47bf25f34e35c8096f99d178fb1a811681
7
+ data.tar.gz: 1ad9dbef4a56e0aca0de2e39c9af3bd6b263fe9a079893dc700fba14c11fa247492f4b83d08e25f69d09d3e083c5dd16870d467e62077dc24d7d6335e0cf14fe
data/.gitignore CHANGED
@@ -4,6 +4,7 @@
4
4
  .config
5
5
  .yardoc
6
6
  Gemfile.lock
7
+ gemfiles/*.lock
7
8
  InstalledFiles
8
9
  _yardoc
9
10
  coverage
data/.travis.yml CHANGED
@@ -2,15 +2,24 @@ language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
4
  - 2.1.1
5
- - 2.1.2
5
+ - 2.2.2
6
+ - 2.3.0
6
7
  addons:
7
8
  postgresql: 9.3
8
9
  gemfile:
9
- - gemfiles/rails_4.0.gemfile
10
- - gemfiles/rails_4.1.gemfile
10
+ - gemfiles/rails_4.gemfile
11
+ - gemfiles/rails_5.gemfile
11
12
  before_script:
12
13
  - createuser -d acts-as-taggable-array-on -U postgres
13
14
  - createdb --username=acts-as-taggable-array-on acts-as-taggable-array-on_test
14
15
  script:
15
16
  - bundle
16
17
  - bundle exec rspec
18
+ matrix:
19
+ exclude:
20
+ - rvm: 2.0.0
21
+ gemfile: gemfiles/rails_5.gemfile
22
+ - rvm: 2.1.1
23
+ gemfile: gemfiles/rails_5.gemfile
24
+ - rvm: 2.1.2
25
+ gemfile: gemfiles/rails_5.gemfile
data/README.md CHANGED
@@ -155,6 +155,60 @@ To handle the result tags named 'tag', prepend scopes.
155
155
  User.where('tag like ?', 'aws%').all_tags { where name: ['ken', 'tom'] }
156
156
  ```
157
157
 
158
+ ## Benchmark
159
+ Based on the [article](https://adamnengland.wordpress.com/2014/02/19/benchmarks-acts-as-taggable-on-vs-postgresql-arrays/), I built [simple benchmark app](https://github.com/tmiyamon/acts-as-taggable-benchmark/) to compare only the main features acts-as-taggable-array-on has.
160
+
161
+ This result does NOT insist acts-as-taggable-array-on is better than acts-as-taggable-on since it provides much more features than this gem.
162
+ In the case you need simple tag functionality, acts-as-taggable-array-on may be helpful to improve its performance.
163
+
164
+ ```bash
165
+ % rake bench:write bench:find_by_id bench:find_by_tag
166
+ Deleted all ActsAsTaggableOn::Tag
167
+ Deleted all ActsAsTaggableOn::Tagging
168
+ Deleted all TaggableUser
169
+ Deleted all TaggableArrayUser
170
+ Finsihed to clean
171
+
172
+
173
+ ###################################################################
174
+
175
+ bench:write
176
+ Rehearsal ---------------------------------------------------------
177
+ Using Taggable 6.950000 0.420000 7.370000 ( 9.223704)
178
+ Using Postgres Arrays 0.710000 0.090000 0.800000 ( 1.184734)
179
+ ------------------------------------------------ total: 8.170000sec
180
+
181
+ user system total real
182
+ Using Taggable 5.800000 0.340000 6.140000 ( 7.842051)
183
+ Using Postgres Arrays 0.680000 0.090000 0.770000 ( 1.117812)
184
+
185
+ ###################################################################
186
+
187
+ bench:find_by_id
188
+ Rehearsal ---------------------------------------------------------
189
+ Using Taggable 1.490000 0.110000 1.600000 ( 2.079776)
190
+ Using Postgres Arrays 0.240000 0.030000 0.270000 ( 0.419430)
191
+ ------------------------------------------------ total: 1.870000sec
192
+
193
+ user system total real
194
+ Using Taggable 1.440000 0.100000 1.540000 ( 2.023188)
195
+ Using Postgres Arrays 0.250000 0.040000 0.290000 ( 0.434233)
196
+
197
+ ###################################################################
198
+
199
+ bench:find_by_tag
200
+ Rehearsal ---------------------------------------------------------
201
+ Using Taggable 0.600000 0.040000 0.640000 ( 1.107227)
202
+ Using Postgres Arrays 0.060000 0.000000 0.060000 ( 0.060019)
203
+ ------------------------------------------------ total: 0.700000sec
204
+
205
+ user system total real
206
+ Using Taggable 0.600000 0.040000 0.640000 ( 1.100302)
207
+ Using Postgres Arrays 0.030000 0.000000 0.030000 ( 0.033001)
208
+ rake bench:write bench:find_by_id bench:find_by_tag 20.29s user 1.52s system 77% cpu 28.322 total
209
+ ```
210
+
211
+
158
212
  ## Contributing
159
213
 
160
214
  1. Fork it ( http://github.com/tmiyamon/acts-as-taggable-array-on/fork )
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_runtime_dependency 'activerecord', ['>= 4', '< 5']
22
- spec.add_runtime_dependency 'activesupport', ['>= 4', '< 5']
21
+ spec.add_runtime_dependency 'activerecord', ['>= 4']
22
+ spec.add_runtime_dependency 'activesupport', ['>= 4']
23
23
 
24
24
  spec.add_development_dependency 'pg'
25
25
 
@@ -27,4 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake"
28
28
  spec.add_development_dependency "rspec-rails"
29
29
  spec.add_development_dependency "guard-rspec"
30
+ spec.add_development_dependency "listen", "~> 3.0.0"
30
31
  end
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in acts-as-pgarray-taggable-on.gemspec
4
+ gemspec path: '../'
5
+
6
+ gem 'activerecord', '>= 4', '< 5'
7
+ gem 'activesupport', '>= 4', '< 5'
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in acts-as-pgarray-taggable-on.gemspec
4
+ gemspec path: '../'
5
+
6
+ gem 'activerecord', '~> 5.0.0'
7
+ gem 'activesupport', '~> 5.0.0'
@@ -16,7 +16,7 @@ module ActsAsTaggableArrayOn
16
16
 
17
17
  self.class.class_eval do
18
18
  define_method :"all_#{tag_name}" do |options = {}, &block|
19
- subquery_scope = unscoped.select("unnest(#{table_name}.#{tag_name}) as tag").uniq
19
+ subquery_scope = unscoped.select("unnest(#{table_name}.#{tag_name}) as tag").distinct
20
20
  subquery_scope = subquery_scope.instance_eval(&block) if block
21
21
 
22
22
  from(subquery_scope).pluck('tag')
@@ -1,3 +1,3 @@
1
1
  module ActsAsTagPgarray
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
data/spec/spec_helper.rb CHANGED
@@ -16,7 +16,7 @@ class User < ActiveRecord::Base; end
16
16
  RSpec.configure do |config|
17
17
  config.before(:all) do
18
18
  ActiveRecord::Base.establish_connection(
19
- adapter: "postgresql",
19
+ adapter: "postgresql",
20
20
  encoding: 'unicode',
21
21
  database: "acts-as-taggable-array-on_test",
22
22
  username: "acts-as-taggable-array-on"
@@ -37,8 +37,8 @@ def create_database
37
37
  ActiveRecord::Schema.define(:version => 1) do
38
38
  create_table :users do |t|
39
39
  t.string :name
40
- t.string :colors, array: true, defualt: '{}'
41
- t.timestamps
40
+ t.string :colors, array: true, default: []
41
+ t.timestamps null: true
42
42
  end
43
43
  end
44
44
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts-as-taggable-array-on
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takuya Miyamoto
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
11
+ date: 2017-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4'
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '5'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '4'
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '5'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: activesupport
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +31,6 @@ dependencies:
37
31
  - - ">="
38
32
  - !ruby/object:Gem::Version
39
33
  version: '4'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '5'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,9 +38,6 @@ dependencies:
47
38
  - - ">="
48
39
  - !ruby/object:Gem::Version
49
40
  version: '4'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '5'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: pg
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +108,20 @@ dependencies:
120
108
  - - ">="
121
109
  - !ruby/object:Gem::Version
122
110
  version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: listen
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: 3.0.0
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: 3.0.0
123
125
  description: Simple tagging gem for Rails using postgres array.
124
126
  email:
125
127
  - miyamototakuya@gmail.com
@@ -135,6 +137,8 @@ files:
135
137
  - README.md
136
138
  - Rakefile
137
139
  - acts-as-taggable-array-on.gemspec
140
+ - gemfiles/rails_4.gemfile
141
+ - gemfiles/rails_5.gemfile
138
142
  - lib/acts-as-taggable-array-on.rb
139
143
  - lib/acts-as-taggable-array-on/parser.rb
140
144
  - lib/acts-as-taggable-array-on/taggable.rb
@@ -163,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
167
  version: '0'
164
168
  requirements: []
165
169
  rubyforge_project:
166
- rubygems_version: 2.2.2
170
+ rubygems_version: 2.5.1
167
171
  signing_key:
168
172
  specification_version: 4
169
173
  summary: Simple tagging gem for Rails using postgres array.