CloudSesame 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +4 -7
- data/cloud_sesame.gemspec +2 -3
- data/lib/active_support/core_ext/object/deep_dup.rb +53 -0
- data/lib/active_support/core_ext/object/duplicable.rb +98 -0
- data/lib/cloud_sesame.rb +1 -1
- metadata +21 -33
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed1b3fced629d393e5f1e9c9b2a924bbeb662e66
|
4
|
+
data.tar.gz: e3aedff987658901401a153836cf82a0b9fd70f7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d22b450a96a80f452efa6be26ad4f2c50e8599d41345b6224a9040bca11ad22841b5468ce0ee1aad0f1d9ba0eb2f3d8881ea91dd65e595762f690e86a8e184df
|
7
|
+
data.tar.gz: f3a5e062fc035ce9a4c2d3628a1505c997c5782f8142f18ba79439f0eaae84dfed161e40d0c5960c0b0c19a89ded7c19dfc9c9a281a6350209652c8ed10bcc1c
|
data/Gemfile.lock
CHANGED
@@ -1,16 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
CloudSesame (0.5.
|
5
|
-
activesupport (~> 3.2)
|
4
|
+
CloudSesame (0.5.2)
|
6
5
|
aws-sdk (~> 2)
|
7
6
|
|
8
7
|
GEM
|
9
8
|
remote: https://rubygems.org/
|
10
9
|
specs:
|
11
|
-
activesupport (3.2.22.1)
|
12
|
-
i18n (~> 0.6, >= 0.6.4)
|
13
|
-
multi_json (~> 1.0)
|
14
10
|
aws-sdk (2.2.13)
|
15
11
|
aws-sdk-resources (= 2.2.13)
|
16
12
|
aws-sdk-core (2.2.13)
|
@@ -35,14 +31,12 @@ GEM
|
|
35
31
|
guard (~> 2.1)
|
36
32
|
guard-compat (~> 1.1)
|
37
33
|
rspec (>= 2.99.0, < 4.0)
|
38
|
-
i18n (0.7.0)
|
39
34
|
jmespath (1.1.3)
|
40
35
|
listen (3.0.5)
|
41
36
|
rb-fsevent (>= 0.9.3)
|
42
37
|
rb-inotify (>= 0.9)
|
43
38
|
lumberjack (1.0.10)
|
44
39
|
method_source (0.8.2)
|
45
|
-
multi_json (1.11.2)
|
46
40
|
nenv (0.2.0)
|
47
41
|
notiffany (0.0.8)
|
48
42
|
nenv (~> 0.1)
|
@@ -82,3 +76,6 @@ DEPENDENCIES
|
|
82
76
|
pry (~> 0)
|
83
77
|
rspec (~> 3)
|
84
78
|
ruby-prof
|
79
|
+
|
80
|
+
BUNDLED WITH
|
81
|
+
1.11.2
|
data/cloud_sesame.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'CloudSesame'
|
3
|
-
s.version = '0.5.
|
4
|
-
s.date = '2016-02-
|
3
|
+
s.version = '0.5.2'
|
4
|
+
s.date = '2016-02-08'
|
5
5
|
s.summary = "AWS CloudSearch Query DSL"
|
6
6
|
s.description = "AWS CloudSearch Query DSL"
|
7
7
|
s.authors = ['Scott Chu', 'Emily Fan', 'Greg Ward', 'David McHoull',
|
@@ -17,7 +17,6 @@ Gem::Specification.new do |s|
|
|
17
17
|
s.require_paths = ['lib']
|
18
18
|
|
19
19
|
s.add_dependency 'aws-sdk', '~> 2'
|
20
|
-
s.add_dependency 'activesupport', '~> 3.2'
|
21
20
|
|
22
21
|
s.add_development_dependency 'rspec', '~> 3'
|
23
22
|
s.add_development_dependency 'pry', '~> 0'
|
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'active_support/core_ext/object/duplicable'
|
2
|
+
|
3
|
+
class Object
|
4
|
+
# Returns a deep copy of object if it's duplicable. If it's
|
5
|
+
# not duplicable, returns +self+.
|
6
|
+
#
|
7
|
+
# object = Object.new
|
8
|
+
# dup = object.deep_dup
|
9
|
+
# dup.instance_variable_set(:@a, 1)
|
10
|
+
#
|
11
|
+
# object.instance_variable_defined?(:@a) # => false
|
12
|
+
# dup.instance_variable_defined?(:@a) # => true
|
13
|
+
def deep_dup
|
14
|
+
duplicable? ? dup : self
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
class Array
|
19
|
+
# Returns a deep copy of array.
|
20
|
+
#
|
21
|
+
# array = [1, [2, 3]]
|
22
|
+
# dup = array.deep_dup
|
23
|
+
# dup[1][2] = 4
|
24
|
+
#
|
25
|
+
# array[1][2] # => nil
|
26
|
+
# dup[1][2] # => 4
|
27
|
+
def deep_dup
|
28
|
+
map(&:deep_dup)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
class Hash
|
33
|
+
# Returns a deep copy of hash.
|
34
|
+
#
|
35
|
+
# hash = { a: { b: 'b' } }
|
36
|
+
# dup = hash.deep_dup
|
37
|
+
# dup[:a][:c] = 'c'
|
38
|
+
#
|
39
|
+
# hash[:a][:c] # => nil
|
40
|
+
# dup[:a][:c] # => "c"
|
41
|
+
def deep_dup
|
42
|
+
hash = dup
|
43
|
+
each_pair do |key, value|
|
44
|
+
if key.frozen? && ::String === key
|
45
|
+
hash[key] = value.deep_dup
|
46
|
+
else
|
47
|
+
hash.delete(key)
|
48
|
+
hash[key.deep_dup] = value.deep_dup
|
49
|
+
end
|
50
|
+
end
|
51
|
+
hash
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,98 @@
|
|
1
|
+
#--
|
2
|
+
# Most objects are cloneable, but not all. For example you can't dup +nil+:
|
3
|
+
#
|
4
|
+
# nil.dup # => TypeError: can't dup NilClass
|
5
|
+
#
|
6
|
+
# Classes may signal their instances are not duplicable removing +dup+/+clone+
|
7
|
+
# or raising exceptions from them. So, to dup an arbitrary object you normally
|
8
|
+
# use an optimistic approach and are ready to catch an exception, say:
|
9
|
+
#
|
10
|
+
# arbitrary_object.dup rescue object
|
11
|
+
#
|
12
|
+
# Rails dups objects in a few critical spots where they are not that arbitrary.
|
13
|
+
# That rescue is very expensive (like 40 times slower than a predicate), and it
|
14
|
+
# is often triggered.
|
15
|
+
#
|
16
|
+
# That's why we hardcode the following cases and check duplicable? instead of
|
17
|
+
# using that rescue idiom.
|
18
|
+
#++
|
19
|
+
class Object
|
20
|
+
# Can you safely dup this object?
|
21
|
+
#
|
22
|
+
# False for +nil+, +false+, +true+, symbol, number, method objects;
|
23
|
+
# true otherwise.
|
24
|
+
def duplicable?
|
25
|
+
true
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class NilClass
|
30
|
+
# +nil+ is not duplicable:
|
31
|
+
#
|
32
|
+
# nil.duplicable? # => false
|
33
|
+
# nil.dup # => TypeError: can't dup NilClass
|
34
|
+
def duplicable?
|
35
|
+
false
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
class FalseClass
|
40
|
+
# +false+ is not duplicable:
|
41
|
+
#
|
42
|
+
# false.duplicable? # => false
|
43
|
+
# false.dup # => TypeError: can't dup FalseClass
|
44
|
+
def duplicable?
|
45
|
+
false
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
class TrueClass
|
50
|
+
# +true+ is not duplicable:
|
51
|
+
#
|
52
|
+
# true.duplicable? # => false
|
53
|
+
# true.dup # => TypeError: can't dup TrueClass
|
54
|
+
def duplicable?
|
55
|
+
false
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
class Symbol
|
60
|
+
# Symbols are not duplicable:
|
61
|
+
#
|
62
|
+
# :my_symbol.duplicable? # => false
|
63
|
+
# :my_symbol.dup # => TypeError: can't dup Symbol
|
64
|
+
def duplicable?
|
65
|
+
false
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
class Numeric
|
70
|
+
# Numbers are not duplicable:
|
71
|
+
#
|
72
|
+
# 3.duplicable? # => false
|
73
|
+
# 3.dup # => TypeError: can't dup Fixnum
|
74
|
+
def duplicable?
|
75
|
+
false
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
require 'bigdecimal'
|
80
|
+
class BigDecimal
|
81
|
+
# BigDecimals are duplicable:
|
82
|
+
#
|
83
|
+
# BigDecimal.new("1.2").duplicable? # => true
|
84
|
+
# BigDecimal.new("1.2").dup # => #<BigDecimal:...,'0.12E1',18(18)>
|
85
|
+
def duplicable?
|
86
|
+
true
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
class Method
|
91
|
+
# Methods are not duplicable:
|
92
|
+
#
|
93
|
+
# method(:puts).duplicable? # => false
|
94
|
+
# method(:puts).dup # => TypeError: allocator undefined for Method
|
95
|
+
def duplicable?
|
96
|
+
false
|
97
|
+
end
|
98
|
+
end
|
data/lib/cloud_sesame.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: CloudSesame
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Scott Chu
|
@@ -15,104 +15,90 @@ authors:
|
|
15
15
|
autorequire:
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
|
-
date: 2016-02-
|
18
|
+
date: 2016-02-08 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: aws-sdk
|
22
22
|
requirement: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '2'
|
27
27
|
type: :runtime
|
28
28
|
prerelease: false
|
29
29
|
version_requirements: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '2'
|
34
|
-
- !ruby/object:Gem::Dependency
|
35
|
-
name: activesupport
|
36
|
-
requirement: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - ~>
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '3.2'
|
41
|
-
type: :runtime
|
42
|
-
prerelease: false
|
43
|
-
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ~>
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '3.2'
|
48
34
|
- !ruby/object:Gem::Dependency
|
49
35
|
name: rspec
|
50
36
|
requirement: !ruby/object:Gem::Requirement
|
51
37
|
requirements:
|
52
|
-
- - ~>
|
38
|
+
- - "~>"
|
53
39
|
- !ruby/object:Gem::Version
|
54
40
|
version: '3'
|
55
41
|
type: :development
|
56
42
|
prerelease: false
|
57
43
|
version_requirements: !ruby/object:Gem::Requirement
|
58
44
|
requirements:
|
59
|
-
- - ~>
|
45
|
+
- - "~>"
|
60
46
|
- !ruby/object:Gem::Version
|
61
47
|
version: '3'
|
62
48
|
- !ruby/object:Gem::Dependency
|
63
49
|
name: pry
|
64
50
|
requirement: !ruby/object:Gem::Requirement
|
65
51
|
requirements:
|
66
|
-
- - ~>
|
52
|
+
- - "~>"
|
67
53
|
- !ruby/object:Gem::Version
|
68
54
|
version: '0'
|
69
55
|
type: :development
|
70
56
|
prerelease: false
|
71
57
|
version_requirements: !ruby/object:Gem::Requirement
|
72
58
|
requirements:
|
73
|
-
- - ~>
|
59
|
+
- - "~>"
|
74
60
|
- !ruby/object:Gem::Version
|
75
61
|
version: '0'
|
76
62
|
- !ruby/object:Gem::Dependency
|
77
63
|
name: guard
|
78
64
|
requirement: !ruby/object:Gem::Requirement
|
79
65
|
requirements:
|
80
|
-
- -
|
66
|
+
- - ">="
|
81
67
|
- !ruby/object:Gem::Version
|
82
68
|
version: '0'
|
83
69
|
type: :development
|
84
70
|
prerelease: false
|
85
71
|
version_requirements: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - ">="
|
88
74
|
- !ruby/object:Gem::Version
|
89
75
|
version: '0'
|
90
76
|
- !ruby/object:Gem::Dependency
|
91
77
|
name: guard-rspec
|
92
78
|
requirement: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - ">="
|
95
81
|
- !ruby/object:Gem::Version
|
96
82
|
version: '0'
|
97
83
|
type: :development
|
98
84
|
prerelease: false
|
99
85
|
version_requirements: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
89
|
version: '0'
|
104
90
|
- !ruby/object:Gem::Dependency
|
105
91
|
name: ruby-prof
|
106
92
|
requirement: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- -
|
94
|
+
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
type: :development
|
112
98
|
prerelease: false
|
113
99
|
version_requirements: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
|
-
- -
|
101
|
+
- - ">="
|
116
102
|
- !ruby/object:Gem::Version
|
117
103
|
version: '0'
|
118
104
|
description: AWS CloudSearch Query DSL
|
@@ -121,14 +107,16 @@ executables: []
|
|
121
107
|
extensions: []
|
122
108
|
extra_rdoc_files: []
|
123
109
|
files:
|
124
|
-
- .gitignore
|
125
|
-
- .rspec
|
110
|
+
- ".gitignore"
|
111
|
+
- ".rspec"
|
126
112
|
- Gemfile
|
127
113
|
- Gemfile.lock
|
128
114
|
- Guardfile
|
129
115
|
- README.md
|
130
116
|
- cloud_sesame.gemspec
|
131
117
|
- lib/abstract_object.rb
|
118
|
+
- lib/active_support/core_ext/object/deep_dup.rb
|
119
|
+
- lib/active_support/core_ext/object/duplicable.rb
|
132
120
|
- lib/cloud_sesame.rb
|
133
121
|
- lib/cloud_sesame/config/credential.rb
|
134
122
|
- lib/cloud_sesame/context.rb
|
@@ -224,17 +212,17 @@ require_paths:
|
|
224
212
|
- lib
|
225
213
|
required_ruby_version: !ruby/object:Gem::Requirement
|
226
214
|
requirements:
|
227
|
-
- -
|
215
|
+
- - ">="
|
228
216
|
- !ruby/object:Gem::Version
|
229
217
|
version: '0'
|
230
218
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
231
219
|
requirements:
|
232
|
-
- -
|
220
|
+
- - ">="
|
233
221
|
- !ruby/object:Gem::Version
|
234
222
|
version: '0'
|
235
223
|
requirements: []
|
236
224
|
rubyforge_project:
|
237
|
-
rubygems_version: 2.
|
225
|
+
rubygems_version: 2.5.1
|
238
226
|
signing_key:
|
239
227
|
specification_version: 4
|
240
228
|
summary: AWS CloudSearch Query DSL
|