data_steroid 0.5.0.1 → 0.5.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.
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