pluck_all 1.1.2 → 1.2.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.
- checksums.yaml +4 -4
- data/README.md +4 -3
- data/gemfiles/3.2.gemfile +2 -1
- data/gemfiles/4.2.gemfile +2 -1
- data/gemfiles/5.0.gemfile +2 -1
- data/lib/pluck_all.rb +29 -6
- data/lib/pluck_all/version.rb +1 -1
- data/pluck_all.gemspec +3 -3
- metadata +10 -11
- data/gemfiles/4.2.gemfile.lock +0 -127
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fca45f74cf96734cade27e1a8a328f9d9dc72c2
|
4
|
+
data.tar.gz: 6033dc1f3ac7ef9752d2795b538767df3084408a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 95fed15735f702eed093bee006ca233ac94248782e67c929e291c68b05597eca1cb91211b9e59fcd31542a2dad575fa2586cd03ddc4b73cc85148cb047508996
|
7
|
+
data.tar.gz: a9d363a864348ecd5b8b83e169ef268ae514b0f0154af4bfb3757a10d9dc1b58201dba6373cb3e824075a2cd204a023220fae757d84dd3853db7f3118fdb696c
|
data/README.md
CHANGED
@@ -36,15 +36,16 @@ Or install it yourself as:
|
|
36
36
|
### pluck to array
|
37
37
|
Behaves the same as the Rails 4 pluck, but you can use it in Rails 3
|
38
38
|
```rb
|
39
|
-
User.where(
|
39
|
+
User.where('id < 3').pluck_array(:id, :account)
|
40
40
|
# => [[1, 'account1'], [2, 'account2']]
|
41
41
|
```
|
42
42
|
### pluck to hash
|
43
43
|
Similar to `pluck_array`, but return hash instead.
|
44
44
|
```rb
|
45
|
-
User.where(
|
45
|
+
User.where('id < 3').pluck_all(:id, :account)
|
46
46
|
# => [{"id"=>1, "account"=>"account1"}, {"id"=>2, "account"=>"account2"}]
|
47
|
-
|
47
|
+
|
48
|
+
User.where('id < 3').pluck_all('id, account AS name')
|
48
49
|
# => [{"id"=>1, "name"=>"account1"}, {"id"=>2, "name"=>"account2"}]
|
49
50
|
```
|
50
51
|
|
data/gemfiles/3.2.gemfile
CHANGED
@@ -2,11 +2,12 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in pluck_all.gemspec
|
4
4
|
|
5
|
-
gem "
|
5
|
+
gem "activerecord", "~> 3.2"
|
6
6
|
|
7
7
|
group :test do
|
8
8
|
gem "simplecov"
|
9
9
|
gem "codeclimate-test-reporter", "~> 1.0.0"
|
10
|
+
gem 'carrierwave', '~> 0.11.0'
|
10
11
|
end
|
11
12
|
|
12
13
|
gemspec :path => "../"
|
data/gemfiles/4.2.gemfile
CHANGED
@@ -2,11 +2,12 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in pluck_all.gemspec
|
4
4
|
|
5
|
-
gem "
|
5
|
+
gem "activerecord", "~> 4.2"
|
6
6
|
|
7
7
|
group :test do
|
8
8
|
gem "simplecov"
|
9
9
|
gem "codeclimate-test-reporter", "~> 1.0.0"
|
10
|
+
gem 'carrierwave', '~> 0.11.0'
|
10
11
|
end
|
11
12
|
|
12
13
|
gemspec :path => "../"
|
data/gemfiles/5.0.gemfile
CHANGED
@@ -2,11 +2,12 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in pluck_all.gemspec
|
4
4
|
|
5
|
-
gem "
|
5
|
+
gem "activerecord", "~> 5.0"
|
6
6
|
|
7
7
|
group :test do
|
8
8
|
gem "simplecov"
|
9
9
|
gem "codeclimate-test-reporter", "~> 1.0.0"
|
10
|
+
gem 'carrierwave', '~> 0.11.0'
|
10
11
|
end
|
11
12
|
|
12
13
|
gemspec :path => "../"
|
data/lib/pluck_all.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
require "pluck_all/version"
|
2
|
-
require 'rails'
|
3
2
|
require 'active_record'
|
4
3
|
|
5
4
|
class ActiveRecord::Base
|
@@ -24,27 +23,34 @@ module ActiveRecord
|
|
24
23
|
end
|
25
24
|
end
|
26
25
|
class ActiveRecord::Relation
|
27
|
-
if Gem::Version.new(
|
26
|
+
if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('4.0.0')
|
28
27
|
def pluck_all(*args)
|
29
28
|
result = select_all(*args)
|
30
|
-
result.map! do |attributes|
|
29
|
+
result.map! do |attributes| #This map! behaves different to array#map!
|
31
30
|
initialized_attributes = klass.initialize_attributes(attributes)
|
32
31
|
attributes.each do |key, attribute|
|
33
32
|
attributes[key] = klass.type_cast_attribute(key, initialized_attributes) #TODO 現在AS過後的type cast會有一點問題
|
34
33
|
end
|
34
|
+
cast_carrier_wave_uploader_url(attributes)
|
35
35
|
end
|
36
36
|
end
|
37
37
|
else
|
38
38
|
def pluck_all(*args)
|
39
39
|
result = select_all(*args)
|
40
40
|
attribute_types = klass.attribute_types
|
41
|
-
result.map! do |attributes|
|
41
|
+
result.map! do |attributes| #This map! behaves different to array#map!
|
42
42
|
attributes.each do |key, attribute|
|
43
43
|
attributes[key] = result.send(:column_type, key, attribute_types).deserialize(attribute) #TODO 現在AS過後的type cast會有一點問題,但似乎原生的pluck也有此問題
|
44
44
|
end
|
45
|
+
cast_carrier_wave_uploader_url(attributes)
|
45
46
|
end
|
46
47
|
end
|
47
48
|
end
|
49
|
+
def cast_need_columns(column_names, _klass = nil)
|
50
|
+
@pluck_all_cast_need_columns = column_names.map(&:to_s)
|
51
|
+
@pluck_all_cast_klass = _klass || klass
|
52
|
+
return self
|
53
|
+
end
|
48
54
|
private
|
49
55
|
def select_all(*args)
|
50
56
|
args.map! do |column_name|
|
@@ -58,11 +64,25 @@ private
|
|
58
64
|
return klass.connection.select_all(relation.select(args).to_sql)
|
59
65
|
#return klass.connection.select_all(relation.arel)
|
60
66
|
end
|
67
|
+
#----------------------------------
|
68
|
+
# Support casting CarrierWave url
|
69
|
+
#----------------------------------
|
70
|
+
def cast_carrier_wave_uploader_url(attributes)
|
71
|
+
if defined?(CarrierWave) and @pluck_all_cast_klass
|
72
|
+
@pluck_all_cast_klass.uploaders.each do |key, uploader|
|
73
|
+
next if (value = attributes[key.to_s]) == nil
|
74
|
+
obj = @pluck_all_cast_klass.new
|
75
|
+
obj[key] = value
|
76
|
+
@pluck_all_cast_need_columns.each{|s| obj[s] = attributes[s] }
|
77
|
+
attributes[key.to_s] = obj.send(:_mounter, key).uploader.to_s #uploaders.first
|
78
|
+
end
|
79
|
+
end
|
80
|
+
return attributes
|
81
|
+
end
|
61
82
|
end
|
62
83
|
|
63
|
-
|
64
84
|
class ActiveRecord::Relation
|
65
|
-
if Gem::Version.new(
|
85
|
+
if Gem::Version.new(ActiveRecord::VERSION::STRING) < Gem::Version.new('4.0.2')
|
66
86
|
def pluck_array(*args)
|
67
87
|
return pluck_all(*args).map{|hash|
|
68
88
|
result = hash.values #P.S. 這裡是相信ruby 1.9以後,hash.values的順序跟insert的順序一樣。
|
@@ -76,6 +96,9 @@ end
|
|
76
96
|
|
77
97
|
|
78
98
|
class ActiveRecord::Base
|
99
|
+
def self.cast_need_columns(*args)
|
100
|
+
self.where('').cast_need_columns(*args)
|
101
|
+
end
|
79
102
|
def self.pluck_all(*args)
|
80
103
|
self.where('').pluck_all(*args)
|
81
104
|
end
|
data/lib/pluck_all/version.rb
CHANGED
data/pluck_all.gemspec
CHANGED
@@ -9,8 +9,8 @@ Gem::Specification.new do |spec|
|
|
9
9
|
spec.authors = ["khiav reoy"]
|
10
10
|
spec.email = ["mrtmrt15xn@yahoo.com.tw"]
|
11
11
|
|
12
|
-
spec.summary = %q{Pluck multiple attributes in Rails 3, 4, 5, and can return data as hash instead of only array.}
|
13
|
-
spec.description = %q{Pluck multiple attributes in Rails 3, 4, 5, and can return data as hash instead of only array. 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.}
|
12
|
+
spec.summary = %q{Pluck multiple columns/attributes in Rails 3, 4, 5, and can return data as hash instead of only array.}
|
13
|
+
spec.description = %q{Pluck multiple columns/attributes in Rails 3, 4, 5, and can return data as hash instead of only array. 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
14
|
spec.homepage = "https://github.com/khiav223577/pluck_all"
|
15
15
|
spec.license = "MIT"
|
16
16
|
|
@@ -28,7 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ["lib"]
|
29
29
|
|
30
30
|
spec.add_development_dependency "bundler", "~> 1.11"
|
31
|
-
spec.add_development_dependency "rake", "~>
|
31
|
+
spec.add_development_dependency "rake", "~> 12.0"
|
32
32
|
spec.add_development_dependency "sqlite3", "~> 1.3"
|
33
33
|
spec.add_development_dependency "minitest", "~> 5.0"
|
34
34
|
|
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: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- khiav reoy
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '12.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '12.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: sqlite3
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,10 +80,10 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3'
|
83
|
-
description: Pluck multiple attributes in Rails 3, 4, 5, and can return data
|
84
|
-
instead of only array. If you have a Rails 3 project, and want to pluck
|
85
|
-
one column, feel free to use this gem and no need to worry about upgrading
|
86
|
-
4, 5 in the future will break this.
|
83
|
+
description: Pluck multiple columns/attributes in Rails 3, 4, 5, and can return data
|
84
|
+
as hash instead of only array. If you have a Rails 3 project, and want to pluck
|
85
|
+
not only one column, feel free to use this gem and no need to worry about upgrading
|
86
|
+
to Rails 4, 5 in the future will break this.
|
87
87
|
email:
|
88
88
|
- mrtmrt15xn@yahoo.com.tw
|
89
89
|
executables: []
|
@@ -100,7 +100,6 @@ files:
|
|
100
100
|
- bin/setup
|
101
101
|
- gemfiles/3.2.gemfile
|
102
102
|
- gemfiles/4.2.gemfile
|
103
|
-
- gemfiles/4.2.gemfile.lock
|
104
103
|
- gemfiles/5.0.gemfile
|
105
104
|
- lib/pluck_all.rb
|
106
105
|
- lib/pluck_all/version.rb
|
@@ -128,6 +127,6 @@ rubyforge_project:
|
|
128
127
|
rubygems_version: 2.4.8
|
129
128
|
signing_key:
|
130
129
|
specification_version: 4
|
131
|
-
summary: Pluck multiple attributes in Rails 3, 4, 5, and can return data as
|
132
|
-
of only array.
|
130
|
+
summary: Pluck multiple columns/attributes in Rails 3, 4, 5, and can return data as
|
131
|
+
hash instead of only array.
|
133
132
|
test_files: []
|
data/gemfiles/4.2.gemfile.lock
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: ../
|
3
|
-
specs:
|
4
|
-
pluck_all (1.1.0)
|
5
|
-
rails (>= 3)
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
actionmailer (4.2.7.1)
|
11
|
-
actionpack (= 4.2.7.1)
|
12
|
-
actionview (= 4.2.7.1)
|
13
|
-
activejob (= 4.2.7.1)
|
14
|
-
mail (~> 2.5, >= 2.5.4)
|
15
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
16
|
-
actionpack (4.2.7.1)
|
17
|
-
actionview (= 4.2.7.1)
|
18
|
-
activesupport (= 4.2.7.1)
|
19
|
-
rack (~> 1.6)
|
20
|
-
rack-test (~> 0.6.2)
|
21
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
22
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
23
|
-
actionview (4.2.7.1)
|
24
|
-
activesupport (= 4.2.7.1)
|
25
|
-
builder (~> 3.1)
|
26
|
-
erubis (~> 2.7.0)
|
27
|
-
rails-dom-testing (~> 1.0, >= 1.0.5)
|
28
|
-
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
29
|
-
activejob (4.2.7.1)
|
30
|
-
activesupport (= 4.2.7.1)
|
31
|
-
globalid (>= 0.3.0)
|
32
|
-
activemodel (4.2.7.1)
|
33
|
-
activesupport (= 4.2.7.1)
|
34
|
-
builder (~> 3.1)
|
35
|
-
activerecord (4.2.7.1)
|
36
|
-
activemodel (= 4.2.7.1)
|
37
|
-
activesupport (= 4.2.7.1)
|
38
|
-
arel (~> 6.0)
|
39
|
-
activesupport (4.2.7.1)
|
40
|
-
i18n (~> 0.7)
|
41
|
-
json (~> 1.7, >= 1.7.7)
|
42
|
-
minitest (~> 5.1)
|
43
|
-
thread_safe (~> 0.3, >= 0.3.4)
|
44
|
-
tzinfo (~> 1.1)
|
45
|
-
arel (6.0.4)
|
46
|
-
builder (3.2.2)
|
47
|
-
codeclimate-test-reporter (1.0.3)
|
48
|
-
simplecov
|
49
|
-
concurrent-ruby (1.0.4)
|
50
|
-
docile (1.1.5)
|
51
|
-
erubis (2.7.0)
|
52
|
-
globalid (0.3.7)
|
53
|
-
activesupport (>= 4.1.0)
|
54
|
-
i18n (0.7.0)
|
55
|
-
json (1.8.3)
|
56
|
-
loofah (2.0.3)
|
57
|
-
nokogiri (>= 1.5.9)
|
58
|
-
mail (2.6.4)
|
59
|
-
mime-types (>= 1.16, < 4)
|
60
|
-
mime-types (3.1)
|
61
|
-
mime-types-data (~> 3.2015)
|
62
|
-
mime-types-data (3.2016.0521)
|
63
|
-
mini_portile2 (2.1.0)
|
64
|
-
minitest (5.10.1)
|
65
|
-
nokogiri (1.7.0)
|
66
|
-
mini_portile2 (~> 2.1.0)
|
67
|
-
rack (1.6.5)
|
68
|
-
rack-test (0.6.3)
|
69
|
-
rack (>= 1.0)
|
70
|
-
rails (4.2.7.1)
|
71
|
-
actionmailer (= 4.2.7.1)
|
72
|
-
actionpack (= 4.2.7.1)
|
73
|
-
actionview (= 4.2.7.1)
|
74
|
-
activejob (= 4.2.7.1)
|
75
|
-
activemodel (= 4.2.7.1)
|
76
|
-
activerecord (= 4.2.7.1)
|
77
|
-
activesupport (= 4.2.7.1)
|
78
|
-
bundler (>= 1.3.0, < 2.0)
|
79
|
-
railties (= 4.2.7.1)
|
80
|
-
sprockets-rails
|
81
|
-
rails-deprecated_sanitizer (1.0.3)
|
82
|
-
activesupport (>= 4.2.0.alpha)
|
83
|
-
rails-dom-testing (1.0.8)
|
84
|
-
activesupport (>= 4.2.0.beta, < 5.0)
|
85
|
-
nokogiri (~> 1.6)
|
86
|
-
rails-deprecated_sanitizer (>= 1.0.1)
|
87
|
-
rails-html-sanitizer (1.0.3)
|
88
|
-
loofah (~> 2.0)
|
89
|
-
railties (4.2.7.1)
|
90
|
-
actionpack (= 4.2.7.1)
|
91
|
-
activesupport (= 4.2.7.1)
|
92
|
-
rake (>= 0.8.7)
|
93
|
-
thor (>= 0.18.1, < 2.0)
|
94
|
-
rake (10.5.0)
|
95
|
-
simplecov (0.12.0)
|
96
|
-
docile (~> 1.1.0)
|
97
|
-
json (>= 1.8, < 3)
|
98
|
-
simplecov-html (~> 0.10.0)
|
99
|
-
simplecov-html (0.10.0)
|
100
|
-
sprockets (3.7.1)
|
101
|
-
concurrent-ruby (~> 1.0)
|
102
|
-
rack (> 1, < 3)
|
103
|
-
sprockets-rails (3.2.0)
|
104
|
-
actionpack (>= 4.0)
|
105
|
-
activesupport (>= 4.0)
|
106
|
-
sprockets (>= 3.0.0)
|
107
|
-
sqlite3 (1.3.12)
|
108
|
-
thor (0.19.4)
|
109
|
-
thread_safe (0.3.5)
|
110
|
-
tzinfo (1.2.2)
|
111
|
-
thread_safe (~> 0.1)
|
112
|
-
|
113
|
-
PLATFORMS
|
114
|
-
ruby
|
115
|
-
|
116
|
-
DEPENDENCIES
|
117
|
-
bundler (~> 1.11)
|
118
|
-
codeclimate-test-reporter (~> 1.0.0)
|
119
|
-
minitest (~> 5.0)
|
120
|
-
pluck_all!
|
121
|
-
rails (~> 4.2)
|
122
|
-
rake (~> 10.0)
|
123
|
-
simplecov
|
124
|
-
sqlite3 (~> 1.3)
|
125
|
-
|
126
|
-
BUNDLED WITH
|
127
|
-
1.11.2
|