pluck_all 2.0.3 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,69 +1,70 @@
1
- # frozen_string_literal: true
2
- module Mongoid
3
- module Document::ClassMethods
4
- def pluck_array(*fields)
5
- where(nil).pluck_array(*fields)
6
- end
7
-
8
- def pluck_all(*fields)
9
- where(nil).pluck_all(*fields)
10
- end
11
- end
12
-
13
- module Findable
14
- delegate :pluck_all, :pluck_array, to: :with_default_scope
15
- end
16
-
17
- module Contextual
18
- delegate :pluck_all, :pluck_array, to: :context
19
-
20
- class None
21
- def pluck_array(*)
22
- []
23
- end
24
-
25
- def pluck_all(*)
26
- []
27
- end
28
- end
29
-
30
- class Mongo
31
- def pluck_array(*fields)
32
- normalized_select = get_normalized_select(fields)
33
- get_query_data(normalized_select).reduce([]) do |plucked, doc|
34
- values = normalized_select.keys.map(&plucked_value_mapper(:array, doc))
35
- plucked << (values.size == 1 ? values.first : values)
36
- end
37
- end
38
-
39
- def pluck_all(*fields)
40
- normalized_select = get_normalized_select(fields)
41
- get_query_data(normalized_select).reduce([]) do |plucked, doc|
42
- values = normalized_select.keys.map(&plucked_value_mapper(:all, doc))
43
- plucked << values.to_h
44
- end
45
- end
46
-
47
- private
48
-
49
- def plucked_value_mapper(type, doc)
50
- Proc.new do |n|
51
- values = [n, n =~ /\./ ? doc[n.partition('.')[0]] : doc[n]]
52
- case type
53
- when :array then values[1]
54
- when :all then values
55
- end
56
- end
57
- end
58
- def get_query_data(normalized_select)
59
- return (@view ? @view.projection(normalized_select) : query.dup.select(normalized_select))
60
- end
61
-
62
- def get_normalized_select(fields)
63
- fields.each_with_object({}) do |f, hash|
64
- hash[klass.database_field_name(f)] = 1
65
- end
66
- end
67
- end
68
- end
69
- end
1
+ # frozen_string_literal: true
2
+ module Mongoid
3
+ module Document::ClassMethods
4
+ def pluck_array(*fields)
5
+ where(nil).pluck_array(*fields)
6
+ end
7
+
8
+ def pluck_all(*fields)
9
+ where(nil).pluck_all(*fields)
10
+ end
11
+ end
12
+
13
+ module Findable
14
+ delegate :pluck_all, :pluck_array, to: :with_default_scope
15
+ end
16
+
17
+ module Contextual
18
+ delegate :pluck_all, :pluck_array, to: :context
19
+
20
+ class None
21
+ def pluck_array(*)
22
+ []
23
+ end
24
+
25
+ def pluck_all(*)
26
+ []
27
+ end
28
+ end
29
+
30
+ class Mongo
31
+ def pluck_array(*fields)
32
+ normalized_select = get_normalized_select(fields)
33
+ get_query_data(normalized_select).reduce([]) do |plucked, doc|
34
+ values = normalized_select.keys.map(&plucked_value_mapper(:array, doc))
35
+ plucked << (values.size == 1 ? values.first : values)
36
+ end
37
+ end
38
+
39
+ def pluck_all(*fields)
40
+ normalized_select = get_normalized_select(fields)
41
+ get_query_data(normalized_select).reduce([]) do |plucked, doc|
42
+ values = normalized_select.keys.map(&plucked_value_mapper(:all, doc))
43
+ plucked << values.to_h
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def plucked_value_mapper(type, doc)
50
+ proc do |n|
51
+ values = [n, n =~ /\./ ? doc[n.partition('.')[0]] : doc[n]]
52
+ case type
53
+ when :array then values[1]
54
+ when :all then values
55
+ end
56
+ end
57
+ end
58
+
59
+ def get_query_data(normalized_select)
60
+ return (@view ? @view.projection(normalized_select) : query.dup.select(normalized_select))
61
+ end
62
+
63
+ def get_normalized_select(fields)
64
+ fields.each_with_object({}) do |f, hash|
65
+ hash[klass.database_field_name(f)] = 1
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,13 @@
1
+ module ActiveRecord
2
+ [
3
+ *([Type::Value, Type::Integer, Type::Serialized] if defined?(Type::Value)),
4
+ *([Enum::EnumType] if defined?(Enum::EnumType)),
5
+ ].each do |s|
6
+ s.class_eval do
7
+ if !method_defined?(:deserialize) && method_defined?(:type_cast_from_database)
8
+ # deserialize was changed to type_cast_from_database in Rails 5
9
+ alias_method :deserialize, :type_cast_from_database
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,4 +1,4 @@
1
- # frozen_string_literal: true
2
- module PluckAll
3
- VERSION = '2.0.3'
4
- end
1
+ # frozen_string_literal: true
2
+ module PluckAll
3
+ VERSION = '2.3.1'
4
+ end
data/pluck_all.gemspec CHANGED
@@ -1,35 +1,43 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'pluck_all/version'
5
-
6
- Gem::Specification.new do |spec|
7
- spec.name = "pluck_all"
8
- spec.version = PluckAll::VERSION
9
- spec.authors = ["khiav reoy"]
10
- spec.email = ["mrtmrt15xn@yahoo.com.tw"]
11
-
12
- spec.summary = %q{Pluck multiple columns/attributes and return array of hashes. Support Rails 3, 4, 5.}
13
- spec.description = %q{Pluck multiple columns/attributes and return array of hashes. Support Rails 3, 4, 5. If you have a Rails 3 project, and want to pluck not only one column, feel free to use this gem and no need to worry about upgrading to Rails 4, 5 in the future will break this.}
14
- spec.homepage = "https://github.com/khiav223577/pluck_all"
15
- spec.license = "MIT"
16
-
17
- # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
- # delete this section to allow pushing this gem to any host.
19
- #if spec.respond_to?(:metadata)
20
- # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
- #else
22
- # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
- #end
24
-
25
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
26
- spec.bindir = "exe"
27
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
- spec.require_paths = ["lib"]
29
-
30
- spec.add_dependency "activesupport", ">= 3.0.0"
31
-
32
- spec.add_development_dependency "bundler", "~> 1.11"
33
- spec.add_development_dependency "rake", "~> 12.0"
34
- spec.add_development_dependency "minitest", "~> 5.0"
35
- end
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'pluck_all/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'pluck_all'
8
+ spec.version = PluckAll::VERSION
9
+ spec.authors = ['khiav reoy']
10
+ spec.email = ['mrtmrt15xn@yahoo.com.tw']
11
+
12
+ spec.summary = 'Pluck multiple columns/attributes and return array of hashes. Support Rails 3, 4, 5.'
13
+ spec.description = 'Pluck multiple columns/attributes and return array of hashes. Support Rails 3, 4, 5. If you have a Rails 3 project, and want to pluck not only one column, feel free to use this gem and no need to worry about upgrading to Rails 4, 5 in the future will break this.'
14
+ spec.homepage = 'https://github.com/khiav223577/pluck_all'
15
+ spec.license = 'MIT'
16
+
17
+ # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
18
+ # delete this section to allow pushing this gem to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
23
+ # end
24
+
25
+ spec.files = `git ls-files -z`.split("\x0").reject{|f| f.match(%r{^(test|spec|features)/}) }
26
+ spec.bindir = 'exe'
27
+ spec.executables = spec.files.grep(%r{^exe/}){|f| File.basename(f) }
28
+ spec.require_paths = ['lib']
29
+ spec.metadata = {
30
+ 'homepage_uri' => 'https://github.com/khiav223577/pluck_all',
31
+ 'changelog_uri' => 'https://github.com/khiav223577/pluck_all/blob/master/CHANGELOG.md',
32
+ 'source_code_uri' => 'https://github.com/khiav223577/pluck_all',
33
+ 'documentation_uri' => 'https://www.rubydoc.info/gems/pluck_all',
34
+ 'bug_tracker_uri' => 'https://github.com/khiav223577/pluck_all/issues',
35
+ }
36
+
37
+ spec.add_dependency 'activesupport', '>= 3.0.0'
38
+ spec.add_dependency 'rails_compatibility', '>= 0.0.7'
39
+
40
+ spec.add_development_dependency 'bundler', '>= 1.17', '< 3.x'
41
+ spec.add_development_dependency 'rake', '~> 12.0'
42
+ spec.add_development_dependency 'minitest', '~> 5.0'
43
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pluck_all
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - khiav reoy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-07-19 00:00:00.000000000 Z
11
+ date: 2021-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -24,20 +24,40 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 3.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: rails_compatibility
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.0.7
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.0.7
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.11'
47
+ version: '1.17'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: 3.x
34
51
  type: :development
35
52
  prerelease: false
36
53
  version_requirements: !ruby/object:Gem::Requirement
37
54
  requirements:
38
- - - "~>"
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '1.17'
58
+ - - "<"
39
59
  - !ruby/object:Gem::Version
40
- version: '1.11'
60
+ version: 3.x
41
61
  - !ruby/object:Gem::Dependency
42
62
  name: rake
43
63
  requirement: !ruby/object:Gem::Requirement
@@ -76,8 +96,9 @@ executables: []
76
96
  extensions: []
77
97
  extra_rdoc_files: []
78
98
  files:
99
+ - ".github/workflows/ruby.yml"
79
100
  - ".gitignore"
80
- - ".travis.yml"
101
+ - ".rubocop.yml"
81
102
  - CHANGELOG.md
82
103
  - CODE_OF_CONDUCT.md
83
104
  - LICENSE.txt
@@ -90,6 +111,8 @@ files:
90
111
  - gemfiles/active_record_50.gemfile
91
112
  - gemfiles/active_record_51.gemfile
92
113
  - gemfiles/active_record_52.gemfile
114
+ - gemfiles/active_record_60.gemfile
115
+ - gemfiles/active_record_61.gemfile
93
116
  - gemfiles/mongoid_54.gemfile
94
117
  - gemfiles/mongoid_64.gemfile
95
118
  - gemfiles/mongoid_70.gemfile
@@ -97,12 +120,18 @@ files:
97
120
  - lib/pluck_all/hooks.rb
98
121
  - lib/pluck_all/models/active_record_extension.rb
99
122
  - lib/pluck_all/models/mongoid_extension.rb
123
+ - lib/pluck_all/models/patches/deserialize.rb
100
124
  - lib/pluck_all/version.rb
101
125
  - pluck_all.gemspec
102
126
  homepage: https://github.com/khiav223577/pluck_all
103
127
  licenses:
104
128
  - MIT
105
- metadata: {}
129
+ metadata:
130
+ homepage_uri: https://github.com/khiav223577/pluck_all
131
+ changelog_uri: https://github.com/khiav223577/pluck_all/blob/master/CHANGELOG.md
132
+ source_code_uri: https://github.com/khiav223577/pluck_all
133
+ documentation_uri: https://www.rubydoc.info/gems/pluck_all
134
+ bug_tracker_uri: https://github.com/khiav223577/pluck_all/issues
106
135
  post_install_message:
107
136
  rdoc_options: []
108
137
  require_paths:
@@ -118,8 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
147
  - !ruby/object:Gem::Version
119
148
  version: '0'
120
149
  requirements: []
121
- rubyforge_project:
122
- rubygems_version: 2.6.13
150
+ rubygems_version: 3.2.14
123
151
  signing_key:
124
152
  specification_version: 4
125
153
  summary: Pluck multiple columns/attributes and return array of hashes. Support Rails
data/.travis.yml DELETED
@@ -1,52 +0,0 @@
1
- sudo: false
2
- env:
3
- global:
4
- - CC_TEST_REPORTER_ID=db72eba1ff8fb1329dae5fb9b9dcd234243899d7a464ceb374e14a05ead27b7c
5
- language: ruby
6
- rvm:
7
- - 2.2
8
- - 2.3
9
- services:
10
- - mongodb
11
- env:
12
- - ORM_TYPE=ACTIVE_RECORD
13
- - ORM_TYPE=MONGOID
14
- gemfile:
15
- - gemfiles/active_record_32.gemfile
16
- - gemfiles/active_record_42.gemfile
17
- - gemfiles/active_record_50.gemfile
18
- - gemfiles/active_record_51.gemfile
19
- - gemfiles/active_record_52.gemfile
20
- - gemfiles/mongoid_54.gemfile
21
- - gemfiles/mongoid_64.gemfile
22
- - gemfiles/mongoid_70.gemfile
23
- matrix:
24
- exclude:
25
- - gemfile: gemfiles/active_record_32.gemfile
26
- env: ORM_TYPE=MONGOID
27
- - gemfile: gemfiles/active_record_42.gemfile
28
- env: ORM_TYPE=MONGOID
29
- - gemfile: gemfiles/active_record_50.gemfile
30
- env: ORM_TYPE=MONGOID
31
- - gemfile: gemfiles/active_record_51.gemfile
32
- env: ORM_TYPE=MONGOID
33
- - gemfile: gemfiles/active_record_52.gemfile
34
- env: ORM_TYPE=MONGOID
35
- - gemfile: gemfiles/mongoid_54.gemfile
36
- env: ORM_TYPE=ACTIVE_RECORD
37
- - gemfile: gemfiles/mongoid_64.gemfile
38
- env: ORM_TYPE=ACTIVE_RECORD
39
- - gemfile: gemfiles/mongoid_70.gemfile
40
- env: ORM_TYPE=ACTIVE_RECORD
41
- before_install:
42
- - gem install bundler
43
- - gem update --system
44
- - gem --version
45
- - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
46
- - chmod +x ./cc-test-reporter
47
- - ./cc-test-reporter before-build
48
- script:
49
- - if [ "$ORM_TYPE" = "ACTIVE_RECORD" ]; then bundle exec rake test_active_record; fi
50
- - if [ "$ORM_TYPE" = "MONGOID" ]; then bundle exec rake test_mongoid; fi
51
- after_script:
52
- - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT