data_steroid 0.5.0.1 → 0.5.1

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: a2f1a3f092625528df6c6a71056745fbd11cc4e3
4
- data.tar.gz: 8f686ad9f09c221e565576152f84a51024873ce3
3
+ metadata.gz: 417fc8643cd58e294b41e4e398f2d396926433fa
4
+ data.tar.gz: ae03ebb310a2ea626a9f632e0588fc191aebdaeb
5
5
  SHA512:
6
- metadata.gz: 8caece4d2590ceb2a30cee2d4450897af324a66551e1ad59303b41ccd1fce3007b563df7a61b6986d240f71325ac84654beaa8e5d93936b159a4996e9a0919ff
7
- data.tar.gz: b62725cac2fdb839df65bf88fdd4cdd0aa75be3fceb036385dbcde49e42b8c9814ac59741ad7d370674ca10865d9e5c089c4c55c30523a3b769914a81200e0f1
6
+ metadata.gz: e8f27753c9ba2a3955736aa1e63b1e778ce3d26fbcf4c320172757ab5f143bdf90f9c258859947f509cfaaf380ddc5047eb570921e5f04882103a4cb617fe33a
7
+ data.tar.gz: a52d9ce78d4294f353483cf699218617ac215f1fcb29bf5604302ab5c39a1857c430bd59fd894ae48b87594600680c2217eb0f253a74485a15c8e9d60b0e9513
@@ -27,19 +27,18 @@ module DataSteroid
27
27
  end
28
28
 
29
29
  def to_gcloud
30
- hash = {}
31
- properties_names.each do |property|
32
- hash[property] = send(property)
30
+ properties_names.each_with_object({}) do |property, hash|
31
+ hash[property] = type_cast_for_storage send(property)
33
32
  end
34
- hash.sort.to_h
35
33
  end
36
34
 
37
35
  def to_csv
38
- values = to_gcloud.sort.to_h.values.map! do |v|
39
- if v.class == Time
40
- v.to_formatted_s(:db)
36
+ values = to_gcloud.sort.to_h.values.map! do |value|
37
+ case value
38
+ when Time
39
+ value.to_formatted_s(:db)
41
40
  else
42
- v.to_s.gsub(',', '')
41
+ value.to_s.gsub(',', '')
43
42
  end
44
43
  end
45
44
  values.join(',')
@@ -48,6 +47,18 @@ module DataSteroid
48
47
  def self.kind(kind_name)
49
48
  self.kind = kind_name
50
49
  end
50
+
51
+ protected
52
+
53
+ # Based on https://github.com/rails/rails/blob/v5.0.0.1/activerecord/lib/active_record/type_caster/map.rb
54
+ def type_cast_for_storage(value)
55
+ case value
56
+ when Symbol
57
+ value.to_s
58
+ else
59
+ value
60
+ end
61
+ end
51
62
  end
52
63
 
53
64
  class_methods do
@@ -16,29 +16,31 @@ module DataSteroid
16
16
  send(name)
17
17
  end
18
18
 
19
- @gcloud_entity ||= self.class.datastore_entity
20
-
21
19
  to_gcloud.each_pair do |key, value|
22
20
  if key == 'id' && value.present?
23
- @gcloud_entity.key = gcloud_key unless @gcloud_entity.persisted?
24
- next
25
- end
26
- if value.present?
27
- @gcloud_entity[key] = value
28
- elsif @gcloud_entity.properties.exist? key
29
- @gcloud_entity.properties.delete key
21
+ gcloud_entity.key = gcloud_key unless gcloud_entity.persisted?
22
+ elsif value.present?
23
+ gcloud_entity[key] = value
24
+ elsif gcloud_entity.properties.exist? key
25
+ gcloud_entity.properties.delete key
30
26
  end
31
27
  end
32
28
 
33
- if (result = self.class.datastore.save(@gcloud_entity).first)
29
+ if (result = self.class.datastore.save(gcloud_entity).first)
34
30
  send('id=', result.key.id) if id.nil?
35
31
  true
36
32
  else
37
33
  false
38
34
  end
39
35
  end
36
+
37
+ protected
38
+
39
+ def gcloud_entity
40
+ @gcloud_entity ||= self.class.datastore_entity
41
+ end
40
42
  end
41
-
43
+
42
44
  class_methods do
43
45
  def before_save(method)
44
46
  before_save_methods << method
@@ -66,7 +66,7 @@ module DataSteroid
66
66
 
67
67
  define_method("#{name}=") do |value| # Define set method
68
68
  coerced_value =
69
- if options[:type]
69
+ if options[:type] && !value.nil?
70
70
  coercer[value.class].send("to_#{options[:type].to_s.downcase}", value)
71
71
  else
72
72
  value
@@ -1,5 +1,5 @@
1
1
  module DataSteroid
2
2
  # version string
3
3
  # @api public
4
- VERSION = '0.5.0.1'
4
+ VERSION = '0.5.1'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: data_steroid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0.1
4
+ version: 0.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Tomio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-10-19 00:00:00.000000000 Z
11
+ date: 2016-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  requirements: []
110
110
  rubyforge_project:
111
- rubygems_version: 2.6.6
111
+ rubygems_version: 2.6.7
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: Google Datastore ODM