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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 0fd4bf461eb1ac6ec180ec34cd4a9cdd9a2589c1
4
- data.tar.gz: 75c0a8253a052232ed8b0416ba5f9081462a7894
3
+ metadata.gz: ed1b3fced629d393e5f1e9c9b2a924bbeb662e66
4
+ data.tar.gz: e3aedff987658901401a153836cf82a0b9fd70f7
5
5
  SHA512:
6
- metadata.gz: 83a2fc53241e5dd037f1b88738ad8128f43fa88161f6f2207ed64e29c01cb90220d01bf67519d1b4c1e873dc3404bb198960c7011f864121934e8c607209f97e
7
- data.tar.gz: 48b0b4138dd446f4c59f2de92eaca2660938f23f30774c36147d675cc8956041ac64e356f488502c4bb585ff58a455af9bd10c94cc8dc7b59aee97ef6a520d66
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.1)
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.1'
4
- s.date = '2016-02-01'
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
@@ -1,6 +1,6 @@
1
1
  # External Libraries
2
2
  # ===============================================
3
- require 'active_support/all'
3
+ require 'active_support/core_ext/object/deep_dup'
4
4
  require 'aws-sdk'
5
5
  require 'forwardable'
6
6
 
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.1
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-01 00:00:00.000000000 Z
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.4.8
225
+ rubygems_version: 2.5.1
238
226
  signing_key:
239
227
  specification_version: 4
240
228
  summary: AWS CloudSearch Query DSL