cluster 0.7.11 → 0.8.1

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.
@@ -580,15 +580,29 @@ class Amazon < Infrastructure
580
580
  end
581
581
  end
582
582
 
583
+ EMPTY_ARRAY_ELEMENT = 'sdb_empty_array_element_&:&#!-'
583
584
  class << self
584
585
  def to_sdb_attributes(args)
585
586
  attrs = {}
586
- # FIXME this needs a way to deal with arrays that are empty
587
587
  args.each do |k, v|
588
- # FIXME we probably should have some extra indicator of a
589
- # time field so that we can unmarshal it in the #from_sdb_results
590
- v = v.utc.httpdate if Time === v
591
- v and attrs.merge!(k => Array(v))
588
+ next unless v
589
+
590
+ v = if Array === v and v.empty?
591
+ # We store an empty array as an array with the single specialized element
592
+ [self::EMPTY_ARRAY_ELEMENT]
593
+
594
+ elsif Time === v
595
+ # FIXME we probably should have some extra indicator of a
596
+ # time field so that we can unmarshal it in the #from_sdb_results
597
+ [v.utc.httpdate]
598
+
599
+ elsif Date === v
600
+ [v.to_time.utc.httpdate]
601
+
602
+ else
603
+ Array(v)
604
+ end
605
+ attrs.merge!(k => v)
592
606
  end
593
607
  attrs
594
608
  end
@@ -613,7 +627,8 @@ class Amazon < Infrastructure
613
627
  v = if v.empty?
614
628
  nil
615
629
  elsif v.length == 1
616
- v.first
630
+ ff = v.first
631
+ ff.eql?(self::EMPTY_ARRAY_ELEMENT) ? [] : ff
617
632
  else
618
633
  v
619
634
  end
@@ -5,7 +5,7 @@ class Cluster
5
5
 
6
6
  class << self
7
7
  def version
8
- '0.7.11'
8
+ '0.8.1'
9
9
  end
10
10
  end
11
11
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cluster
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.11
4
+ version: 0.8.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-29 00:00:00.000000000 Z
12
+ date: 2013-05-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: uuidtools