fake_dynamo 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -25,9 +25,9 @@ fake_dynamo --port 4567
25
25
  * aws-sdk
26
26
 
27
27
  ````ruby
28
- # rvmsudo fake_dynamo --port 80
29
28
  AWS.config(:use_ssl => false,
30
29
  :dynamo_db_endpoint => 'localhost',
30
+ :dynamo_db_port => 4567,
31
31
  :access_key_id => "xxx",
32
32
  :secret_access_key => "xxx")
33
33
  ````
@@ -28,12 +28,17 @@
28
28
  - :string
29
29
  N:
30
30
  - :string
31
+ B:
32
+ - :blob
31
33
  SS:
32
34
  - :list:
33
35
  - :string
34
36
  NS:
35
37
  - :list:
36
38
  - :string
39
+ BS:
40
+ - :list:
41
+ - :blob
37
42
  - :required
38
43
  RangeKeyElement:
39
44
  - :structure:
@@ -41,12 +46,17 @@
41
46
  - :string
42
47
  N:
43
48
  - :string
49
+ B:
50
+ - :blob
44
51
  SS:
45
52
  - :list:
46
53
  - :string
47
54
  NS:
48
55
  - :list:
49
56
  - :string
57
+ BS:
58
+ - :list:
59
+ - :blob
50
60
  - :required
51
61
  AttributesToGet:
52
62
  - :list:
@@ -84,12 +94,17 @@
84
94
  - :string
85
95
  N:
86
96
  - :string
97
+ B:
98
+ - :blob
87
99
  SS:
88
100
  - :list:
89
101
  - :string
90
102
  NS:
91
103
  - :list:
92
104
  - :string
105
+ BS:
106
+ - :list:
107
+ - :blob
93
108
  - :required
94
109
  RangeKeyElement:
95
110
  - :structure:
@@ -97,12 +112,17 @@
97
112
  - :string
98
113
  N:
99
114
  - :string
115
+ B:
116
+ - :blob
100
117
  SS:
101
118
  - :list:
102
119
  - :string
103
120
  NS:
104
121
  - :list:
105
122
  - :string
123
+ BS:
124
+ - :list:
125
+ - :blob
106
126
  - :required
107
127
  AttributesToGet:
108
128
  - :list:
@@ -170,12 +190,17 @@
170
190
  - :string
171
191
  N:
172
192
  - :string
193
+ B:
194
+ - :blob
173
195
  SS:
174
196
  - :list:
175
197
  - :string
176
198
  NS:
177
199
  - :list:
178
200
  - :string
201
+ BS:
202
+ - :list:
203
+ - :blob
179
204
  - :required
180
205
  Expected:
181
206
  - :map:
@@ -189,12 +214,17 @@
189
214
  - :string
190
215
  N:
191
216
  - :string
217
+ B:
218
+ - :blob
192
219
  SS:
193
220
  - :list:
194
221
  - :string
195
222
  NS:
196
223
  - :list:
197
224
  - :string
225
+ BS:
226
+ - :list:
227
+ - :blob
198
228
  Exists:
199
229
  - :boolean
200
230
  ReturnValues:
@@ -301,12 +331,17 @@
301
331
  - :string
302
332
  N:
303
333
  - :string
334
+ B:
335
+ - :blob
304
336
  SS:
305
337
  - :list:
306
338
  - :string
307
339
  NS:
308
340
  - :list:
309
341
  - :string
342
+ BS:
343
+ - :list:
344
+ - :blob
310
345
  - :required
311
346
  RangeKeyElement:
312
347
  - :structure:
@@ -314,12 +349,17 @@
314
349
  - :string
315
350
  N:
316
351
  - :string
352
+ B:
353
+ - :blob
317
354
  SS:
318
355
  - :list:
319
356
  - :string
320
357
  NS:
321
358
  - :list:
322
359
  - :string
360
+ BS:
361
+ - :list:
362
+ - :blob
323
363
  - :required
324
364
  AttributeUpdates:
325
365
  - :map:
@@ -549,12 +589,17 @@
549
589
  - :string
550
590
  N:
551
591
  - :string
592
+ B:
593
+ - :blob
552
594
  SS:
553
595
  - :list:
554
596
  - :string
555
597
  NS:
556
598
  - :list:
557
599
  - :string
600
+ BS:
601
+ - :list:
602
+ - :blob
558
603
  ComparisonOperator:
559
604
  - :string
560
605
  - :required
@@ -567,12 +612,17 @@
567
612
  - :string
568
613
  N:
569
614
  - :string
615
+ B:
616
+ - :blob
570
617
  SS:
571
618
  - :list:
572
619
  - :string
573
620
  NS:
574
621
  - :list:
575
622
  - :string
623
+ BS:
624
+ - :list:
625
+ - :blob
576
626
  - :required
577
627
  RangeKeyElement:
578
628
  - :structure:
@@ -580,12 +630,17 @@
580
630
  - :string
581
631
  N:
582
632
  - :string
633
+ B:
634
+ - :blob
583
635
  SS:
584
636
  - :list:
585
637
  - :string
586
638
  NS:
587
639
  - :list:
588
640
  - :string
641
+ BS:
642
+ - :list:
643
+ - :blob
589
644
  :output:
590
645
  - Items:
591
646
  - :list: member
@@ -638,12 +693,17 @@
638
693
  - :string
639
694
  N:
640
695
  - :string
696
+ B:
697
+ - :blob
641
698
  SS:
642
699
  - :list:
643
700
  - :string
644
701
  NS:
645
702
  - :list:
646
703
  - :string
704
+ BS:
705
+ - :list:
706
+ - :blob
647
707
  - :required
648
708
  RangeKeyCondition:
649
709
  - :structure:
@@ -654,12 +714,17 @@
654
714
  - :string
655
715
  N:
656
716
  - :string
717
+ B:
718
+ - :blob
657
719
  SS:
658
720
  - :list:
659
721
  - :string
660
722
  NS:
661
723
  - :list:
662
724
  - :string
725
+ BS:
726
+ - :list:
727
+ - :blob
663
728
  ComparisonOperator:
664
729
  - :string
665
730
  - :required
@@ -674,12 +739,17 @@
674
739
  - :string
675
740
  N:
676
741
  - :string
742
+ B:
743
+ - :blob
677
744
  SS:
678
745
  - :list:
679
746
  - :string
680
747
  NS:
681
748
  - :list:
682
749
  - :string
750
+ BS:
751
+ - :list:
752
+ - :blob
683
753
  - :required
684
754
  RangeKeyElement:
685
755
  - :structure:
@@ -687,12 +757,17 @@
687
757
  - :string
688
758
  N:
689
759
  - :string
760
+ B:
761
+ - :blob
690
762
  SS:
691
763
  - :list:
692
764
  - :string
693
765
  NS:
694
766
  - :list:
695
767
  - :string
768
+ BS:
769
+ - :list:
770
+ - :blob
696
771
  :output:
697
772
  - Items:
698
773
  - :list: member
@@ -743,12 +818,17 @@
743
818
  - :string
744
819
  N:
745
820
  - :string
821
+ B:
822
+ - :blob
746
823
  SS:
747
824
  - :list:
748
825
  - :string
749
826
  NS:
750
827
  - :list:
751
828
  - :string
829
+ BS:
830
+ - :list:
831
+ - :blob
752
832
  - :required
753
833
  DeleteRequest:
754
834
  - :structure:
@@ -760,12 +840,17 @@
760
840
  - :string
761
841
  N:
762
842
  - :string
843
+ B:
844
+ - :blob
763
845
  SS:
764
846
  - :list:
765
847
  - :string
766
848
  NS:
767
849
  - :list:
768
850
  - :string
851
+ BS:
852
+ - :list:
853
+ - :blob
769
854
  - :required
770
855
  RangeKeyElement:
771
856
  - :structure:
@@ -773,12 +858,17 @@
773
858
  - :string
774
859
  N:
775
860
  - :string
861
+ B:
862
+ - :blob
776
863
  SS:
777
864
  - :list:
778
865
  - :string
779
866
  NS:
780
867
  - :list:
781
868
  - :string
869
+ BS:
870
+ - :list:
871
+ - :blob
782
872
  - :required
783
873
  - :required
784
874
  :output:
@@ -5,7 +5,15 @@ module FakeDynamo
5
5
  def initialize(name, value, type)
6
6
  @name, @value, @type = name, value, type
7
7
 
8
- if ['NS', 'SS'].include? @type
8
+ if @type == 'B'
9
+ @value = Base64.decode64(value)
10
+ end
11
+
12
+ if @type == 'BS'
13
+ @value = value.map { |v| Base64.decode64(v) }
14
+ end
15
+
16
+ if ['NS', 'SS', 'BS'].include? @type
9
17
  raise ValidationException, 'An AttributeValue may not contain an empty set' if value.empty?
10
18
  raise ValidationException, 'Input collection contains duplicates' if value.uniq!
11
19
  end
@@ -16,9 +24,9 @@ module FakeDynamo
16
24
  end
17
25
  end
18
26
 
19
- if ['S', 'SS'].include? @type
27
+ if ['S', 'SS', 'S', 'BS'].include? @type
20
28
  Array(value).each do |v|
21
- raise ValidationException, 'An AttributeValue may not contain an empty string' if v == ''
29
+ raise ValidationException, 'An AttributeValue may not contain an empty string or empty binary' if v == ''
22
30
  end
23
31
  end
24
32
 
@@ -43,7 +51,15 @@ module FakeDynamo
43
51
  end
44
52
 
45
53
  def as_hash
46
- { @name => { @type => @value } }
54
+ value = if @type == 'B'
55
+ Base64.encode64(@value)
56
+ elsif @type == 'BS'
57
+ @value.map { |v| Base64.encode64(v) }
58
+ else
59
+ @value
60
+ end
61
+
62
+ { @name => { @type => value } }
47
63
  end
48
64
 
49
65
  def ==(attribute)
@@ -49,14 +49,14 @@ module FakeDynamo
49
49
  end
50
50
  end
51
51
 
52
- def_filter(:eq, 1, ['N', 'S'], &:==)
53
- def_filter(:le, 1, ['N', 'S'], &:<=)
54
- def_filter(:lt, 1, ['N', 'S'], &:<)
55
- def_filter(:ge, 1, ['N', 'S'], &:>=)
56
- def_filter(:gt, 1, ['N', 'S'], &:>)
57
- def_filter(:begins_with, 1, ['S'], &:start_with?)
58
- def_filter(:between, 2, ['N', 'S'], &:between?)
59
- def_filter(:ne, 1, ['N', 'S'], &:!=)
52
+ def_filter(:eq, 1, ['N', 'S', 'B'], &:==)
53
+ def_filter(:le, 1, ['N', 'S', 'B'], &:<=)
54
+ def_filter(:lt, 1, ['N', 'S', 'B'], &:<)
55
+ def_filter(:ge, 1, ['N', 'S', 'B'], &:>=)
56
+ def_filter(:gt, 1, ['N', 'S', 'B'], &:>)
57
+ def_filter(:begins_with, 1, ['S', 'B'], &:start_with?)
58
+ def_filter(:between, 2, ['N', 'S', 'B'], &:between?)
59
+ def_filter(:ne, 1, ['N', 'S', 'B'], &:!=)
60
60
 
61
61
  def not_null_filter(value_list, target_attribute, fail_on_type_mismatch)
62
62
  not target_attribute.nil?
@@ -66,16 +66,22 @@ module FakeDynamo
66
66
  target_attribute.nil?
67
67
  end
68
68
 
69
+ def comparable_types?(value_type, target_type)
70
+ ((value_type == 'S' and
71
+ (target_type == 'S' or target_type == 'SS')) or
72
+ (value_type == 'N' and target_type == 'NS') or
73
+ (value_type == 'B' and
74
+ (target_type == 'B' or target_type == 'BS')))
75
+ end
76
+
69
77
  def contains_filter(value_list, target_attribute, fail_on_type_mismatch)
70
78
  return false if target_attribute.nil?
71
79
 
72
80
  validate_size(value_list, 1)
73
81
  value_attribute = Attribute.from_hash(target_attribute.name, value_list.first)
74
- validate_supported_types(value_attribute, ['N', 'S'])
82
+ validate_supported_types(value_attribute, ['N', 'S', 'B'])
75
83
 
76
- if ((value_attribute.type == 'S' and
77
- (target_attribute.type == 'S' or target_attribute.type == 'SS')) or
78
- (value_attribute.type == 'N' and target_attribute.type == 'NS'))
84
+ if comparable_types?(value_attribute.type, target_attribute.type)
79
85
  target_attribute.value.include?(value_attribute.value)
80
86
  end
81
87
  end
@@ -85,11 +91,9 @@ module FakeDynamo
85
91
 
86
92
  validate_size(value_list, 1)
87
93
  value_attribute = Attribute.from_hash(target_attribute.name, value_list.first)
88
- validate_supported_types(value_attribute, ['N', 'S'])
94
+ validate_supported_types(value_attribute, ['N', 'S', 'B'])
89
95
 
90
- if ((value_attribute.type == 'S' and
91
- (target_attribute.type == 'S' or target_attribute.type == 'SS')) or
92
- (value_attribute.type == 'N' and target_attribute.type == 'NS'))
96
+ if comparable_types?(value_attribute.type, target_attribute.type)
93
97
  !target_attribute.value.include?(value_attribute.value)
94
98
  end
95
99
  end
@@ -103,7 +107,7 @@ module FakeDynamo
103
107
 
104
108
  value_attribute_list = value_list.map do |value|
105
109
  value_attribute = Attribute.from_hash(target_attribute.name, value)
106
- validate_supported_types(value_attribute, ['N', 'S'])
110
+ validate_supported_types(value_attribute, ['N', 'S', 'B'])
107
111
  value_attribute
108
112
  end
109
113
 
@@ -71,7 +71,7 @@ module FakeDynamo
71
71
  attributes.delete(name)
72
72
  elsif old_attribute = attributes[name]
73
73
  validate_type(value, old_attribute)
74
- unless ["SS", "NS"].include? old_attribute.type
74
+ unless ["SS", "NS", "BS"].include? old_attribute.type
75
75
  raise ValidationException, "Action DELETE is not supported for type #{old_attribute.type}"
76
76
  end
77
77
  attribute = Attribute.from_hash(name, value)
@@ -82,7 +82,7 @@ module FakeDynamo
82
82
  def add(name, value)
83
83
  attribute = Attribute.from_hash(name, value)
84
84
 
85
- unless ["N", "SS", "NS"].include? attribute.type
85
+ unless ["N", "SS", "NS", "BS"].include? attribute.type
86
86
  raise ValidationException, "Action ADD is not supported for type #{attribute.type}"
87
87
  end
88
88
 
@@ -52,6 +52,8 @@ module FakeDynamo
52
52
  case constrain
53
53
  when :string
54
54
  add_errors("The parameter '#{param(attribute, parents)}' must be a string") unless data.kind_of? String
55
+ when :blob
56
+ add_errors("The parameter '#{param(attribute, parents)}' must be a binary") unless data.kind_of? String
55
57
  when :long
56
58
  add_errors("The parameter '#{param(attribute, parents)}' must be a long") unless data.kind_of? Integer
57
59
  when :integer
@@ -1,3 +1,3 @@
1
1
  module FakeDynamo
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/fake_dynamo.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  require 'fake_dynamo/version'
2
2
  require 'json'
3
+ require 'base64'
3
4
  require 'active_support/inflector'
4
5
  require 'active_support/core_ext/class/attribute'
5
6
  require 'fake_dynamo/exceptions'
@@ -6,17 +6,27 @@ module FakeDynamo
6
6
  include Filter
7
7
  end
8
8
 
9
+
9
10
  describe Filter do
11
+
12
+ def encode(bytes)
13
+ Base64.encode64(bytes.pack('c*'))
14
+ end
15
+
10
16
  subject { FilterTest.new }
11
17
 
18
+ let(:bstr) { encode([1, 2, 3]) }
12
19
  let(:s_attr) { Attribute.new('test', 'bcd', 'S')}
13
20
  let(:ss_attr) { Attribute.new('test', ['ab', 'cd'], 'SS') }
14
21
  let(:n_attr) { Attribute.new('test', '10', 'N')}
15
22
  let(:ns_attr) { Attribute.new('test', ['1', '2', '3', '4'], 'NS')}
23
+ let(:b_attr) { Attribute.new('test', bstr, 'B')}
24
+ let(:bs_attr) { Attribute.new('test', [bstr], 'BS')}
16
25
 
17
26
 
18
27
  it 'tests eq' do
19
28
  subject.eq_filter([{'S' => 'bcd'}], s_attr, false).should be_true
29
+ subject.eq_filter([{'B' => bstr}], b_attr, false).should be_true
20
30
  subject.eq_filter([{'S' => '10'}], n_attr, false).should be_false
21
31
  expect { subject.eq_filter([{'S' => '10'}], n_attr, true) }.to raise_error(ValidationException, /mismatch/)
22
32
  end
@@ -28,6 +38,8 @@ module FakeDynamo
28
38
  subject.le_filter([{'N' => '10'}], n_attr, false).should be_true
29
39
  subject.le_filter([{'N' => '11'}], n_attr, false).should be_true
30
40
  subject.le_filter([{'N' => '1'}], n_attr, false).should be_false
41
+ subject.le_filter([{'B' => encode([1, 1])}], b_attr, false).should be_false
42
+ subject.le_filter([{'B' => encode([1, 2, 3])}], b_attr, false).should be_true
31
43
  end
32
44
 
33
45
  it 'tests lt' do
@@ -37,6 +49,9 @@ module FakeDynamo
37
49
  subject.lt_filter([{'N' => '10'}], n_attr, false).should be_false
38
50
  subject.lt_filter([{'N' => '11'}], n_attr, false).should be_true
39
51
  subject.lt_filter([{'N' => '1'}], n_attr, false).should be_false
52
+ subject.lt_filter([{'B' => encode([1, 2])}], b_attr, false).should be_false
53
+ subject.lt_filter([{'B' => encode([1, 4])}], b_attr, false).should be_true
54
+ subject.lt_filter([{'B' => encode([1, 2, 3])}], b_attr, false).should be_false
40
55
  end
41
56
 
42
57
  it 'test ge' do
@@ -46,6 +61,8 @@ module FakeDynamo
46
61
  subject.ge_filter([{'N' => '10'}], n_attr, false).should be_true
47
62
  subject.ge_filter([{'N' => '11'}], n_attr, false).should be_false
48
63
  subject.ge_filter([{'N' => '1'}], n_attr, false).should be_true
64
+ subject.ge_filter([{'B' => encode([1, 1])}], b_attr, false).should be_true
65
+ subject.ge_filter([{'B' => encode([1, 2, 3])}], b_attr, false).should be_true
49
66
  end
50
67
 
51
68
  it 'test gt' do
@@ -55,11 +72,15 @@ module FakeDynamo
55
72
  subject.gt_filter([{'N' => '10'}], n_attr, false).should be_false
56
73
  subject.gt_filter([{'N' => '11'}], n_attr, false).should be_false
57
74
  subject.gt_filter([{'N' => '1'}], n_attr, false).should be_true
75
+ subject.gt_filter([{'B' => encode([1, 1])}], b_attr, false).should be_true
76
+ subject.gt_filter([{'B' => encode([1, 2, 3])}], b_attr, false).should be_false
58
77
  end
59
78
 
60
79
  it 'test begins_with' do
61
80
  subject.begins_with_filter([{'S' => 'bc'}], s_attr, false).should be_true
62
81
  subject.begins_with_filter([{'S' => 'cd'}], s_attr, false).should be_false
82
+ subject.begins_with_filter([{'B' => encode([1, 1])}], b_attr, false).should be_false
83
+ subject.begins_with_filter([{'B' => encode([1, 2])}], b_attr, false).should be_true
63
84
  expect {
64
85
  subject.begins_with_filter([{'N' => '10'}], n_attr, false)
65
86
  }.to raise_error(ValidationException, /not supported/)
@@ -73,6 +94,8 @@ module FakeDynamo
73
94
  subject.between_filter([{'S' => 'bcd'},{'S' => 'bcd'}], s_attr, false).should be_true
74
95
  subject.between_filter([{'N' => '9'},{'N' => '11'}], n_attr, false).should be_true
75
96
  subject.between_filter([{'S' => '9'},{'S' => '11'}], n_attr, false).should be_false
97
+ subject.between_filter([{'B' => encode([1, 1])}, {'B' => encode([1, 2])}], b_attr, false).should be_false
98
+ subject.between_filter([{'B' => encode([1, 2, 2])}, {'B' => encode([1, 2, 4])}], b_attr, false).should be_true
76
99
  end
77
100
 
78
101
  it 'test ne' do
@@ -80,6 +103,7 @@ module FakeDynamo
80
103
  subject.ne_filter([{'S' => '10'}], n_attr, false).should be_false
81
104
  subject.ne_filter([{'S' => 'xx'}], s_attr, false).should be_true
82
105
  subject.ne_filter([{'S' => '10'}], n_attr, false).should be_false
106
+ subject.ne_filter([{'B' => bstr}], b_attr, false).should be_false
83
107
  end
84
108
 
85
109
  it 'test not null' do
@@ -97,6 +121,7 @@ module FakeDynamo
97
121
  subject.contains_filter([{'S' => 'cd'}], ss_attr, false).should be_true
98
122
  subject.contains_filter([{'N' => '2'}], ns_attr, false).should be_true
99
123
  subject.contains_filter([{'N' => '10'}], n_attr, false).should be_false
124
+ subject.contains_filter([{'B' => encode([1])}], b_attr, false).should be_true
100
125
  end
101
126
 
102
127
  it 'test not contains' do
@@ -106,6 +131,7 @@ module FakeDynamo
106
131
  subject.not_contains_filter([{'N' => '2'}], ns_attr, false).should be_false
107
132
  subject.not_contains_filter([{'N' => '12'}], ns_attr, false).should be_true
108
133
  subject.not_contains_filter([{'N' => '10'}], n_attr, false).should be_false
134
+ subject.not_contains_filter([{'B' => encode([1])}], b_attr, false).should be_false
109
135
  end
110
136
 
111
137
  it 'test in' do
@@ -113,6 +139,7 @@ module FakeDynamo
113
139
  subject.in_filter([{'S' => 'bcd'}, {'N' => '10'}], n_attr, true).should be_true
114
140
  subject.in_filter([{'N' => '1'}], ns_attr, true).should be_false
115
141
  subject.in_filter([{'S' => 'xx'}], s_attr, false).should be_false
142
+ subject.in_filter([{'B' => encode([1, 2, 3])}], b_attr, false).should be_true
116
143
  end
117
144
  end
118
145
  end
@@ -4,15 +4,6 @@ module FakeDynamo
4
4
  describe Server do
5
5
  include Rack::Test::Methods
6
6
 
7
- def get_server(app)
8
- s = app.instance_variable_get :@app
9
- if s.instance_of? Server
10
- s
11
- else
12
- get_server(s)
13
- end
14
- end
15
-
16
7
  let(:data) do
17
8
  {
18
9
  "TableName" => "Table1",
@@ -23,7 +14,7 @@ module FakeDynamo
23
14
  }
24
15
  end
25
16
  let(:app) { Server.new }
26
- let(:server) { get_server(app) }
17
+ let(:server) { Server.new! }
27
18
 
28
19
  it "should extract_operation" do
29
20
  server.extract_operation('HTTP_X_AMZ_TARGET' => 'DynamoDB_20111205.CreateTable').should eq('CreateTable')
@@ -15,7 +15,9 @@ module FakeDynamo
15
15
  def item(i)
16
16
  {'TableName' => 'User',
17
17
  'Item' => { 'id' => { 'S' => (i % 100).to_s },
18
- 'name' => { 'S' => "╩tr¥in" }}
18
+ 'name' => { 'S' => "╩tr¥in" },
19
+ 'binary' => { 'B' => Base64.encode64("binary") },
20
+ 'binary' => { 'BS' => [Base64.encode64("binary")] }}
19
21
  }
20
22
  end
21
23
 
@@ -18,7 +18,9 @@ module FakeDynamo
18
18
  'Item' => {
19
19
  'AttributeName1' => { 'S' => "test" },
20
20
  'AttributeName2' => { 'N' => '11' },
21
- 'AttributeName3' => { 'S' => "another" }
21
+ 'AttributeName3' => { 'S' => "another" },
22
+ 'binary' => { 'B' => Base64.encode64("binary") },
23
+ 'binary_set' => { 'BS' => [Base64.encode64("binary")] }
22
24
  }}
23
25
  end
24
26
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fake_dynamo
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-30 00:00:00.000000000 Z
12
+ date: 2012-11-11 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sinatra
16
- requirement: &70171554944060 !ruby/object:Gem::Requirement
16
+ requirement: &70342224155740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70171554944060
24
+ version_requirements: *70342224155740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: activesupport
27
- requirement: &70171554943600 !ruby/object:Gem::Requirement
27
+ requirement: &70342224155280 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70171554943600
35
+ version_requirements: *70342224155280
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: json
38
- requirement: &70171554943180 !ruby/object:Gem::Requirement
38
+ requirement: &70342224154860 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70171554943180
46
+ version_requirements: *70342224154860
47
47
  description:
48
48
  email:
49
49
  - ananthakumaran@gmail.com