CloudSesame 0.5.1 → 0.5.2

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 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