greenwich 0.0.3 → 0.0.4

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.
@@ -26,7 +26,7 @@ module Greenwich #:nodoc:
26
26
  ActiveSupport::TimeWithZone.new(nil, time_zone, time)
27
27
  },
28
28
  :converter => Proc.new { |value|
29
- value[1] = ActiveSupport::TimeZone.new(value[1]) unless value[1].is_a? ActiveSupport::TimeZone
29
+ value[1] = Greenwich::Utilities.get_time_zone_from(value[1])
30
30
  value[0] = value[0].to_time
31
31
 
32
32
  ActiveSupport::TimeWithZone.new(nil, value[1], value[0])
@@ -34,13 +34,10 @@ module Greenwich #:nodoc:
34
34
 
35
35
  define_method "#{time_field}=" do |time|
36
36
  instance_eval do
37
- time_zone = read_attribute(time_zone)
37
+ write_attribute(time_field, time.to_s)
38
38
 
39
- if time_zone.nil?
40
- write_attribute(time_field, time.to_s)
41
- else
42
- self.send("#{name}=".to_sym, [time, time_zone])
43
- end
39
+ time_zone = read_attribute(time_zone)
40
+ self.send("#{name}=".to_sym, [time, time_zone]) if time && time_zone
44
41
  end
45
42
  end
46
43
 
@@ -56,15 +53,14 @@ module Greenwich #:nodoc:
56
53
  ActiveSupport::TimeZone.new(time_zone_name) unless time_zone_name.nil?
57
54
  end
58
55
 
59
- define_method "#{name}=" do |time_zone|
56
+ define_method "#{name}=" do |time_zone_string|
60
57
  instance_eval do
61
- time_zone = ActiveSupport::TimeZone.new(time_zone) unless time_zone.is_a? ActiveSupport::TimeZone || time_zone.nil?
62
- time_zone = time_zone.name if time_zone.respond_to? :name
58
+ time_zone = Greenwich::Utilities.get_time_zone_from(time_zone_string).try(:name)
63
59
  write_attribute(name, time_zone)
64
60
 
65
61
  options[:for].each do |composed_field, time_field|
66
62
  time = read_attribute(time_field)
67
- self.send("#{composed_field}=".to_sym, [time, time_zone]) unless time.nil?
63
+ self.send("#{composed_field}=".to_sym, [time, time_zone]) if time && time_zone
68
64
  end
69
65
  end
70
66
  end
@@ -12,6 +12,18 @@ module Greenwich
12
12
  get_target_column(target_columns, columns)
13
13
  end
14
14
 
15
+ def self.get_time_zone_from(value)
16
+ return nil if [nil, ''].include? value
17
+
18
+ begin
19
+ value = ActiveSupport::TimeZone.new(value) unless value.is_a? ActiveSupport::TimeZone
20
+ rescue ArgumentError
21
+ raise ArgumentError, "'#{value}' cannot be converted into a TimeZone."
22
+ end
23
+
24
+ value
25
+ end
26
+
15
27
  private
16
28
  def self.get_target_column(target_columns, all_columns)
17
29
  target_columns.each {|col| return col if all_columns.include?(col) }
@@ -1,3 +1,3 @@
1
1
  module Greenwich
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greenwich
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,12 +10,12 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2011-07-06 00:00:00.000000000 -07:00
13
+ date: 2011-07-31 00:00:00.000000000 -05:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
18
- requirement: &2156501600 !ruby/object:Gem::Requirement
18
+ requirement: &2172743720 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
21
  - - ~>
@@ -23,10 +23,10 @@ dependencies:
23
23
  version: '3.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
- version_requirements: *2156501600
26
+ version_requirements: *2172743720
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: bundler
29
- requirement: &2156501060 !ruby/object:Gem::Requirement
29
+ requirement: &2172743220 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
32
  - - ~>
@@ -34,10 +34,10 @@ dependencies:
34
34
  version: '1.0'
35
35
  type: :development
36
36
  prerelease: false
37
- version_requirements: *2156501060
37
+ version_requirements: *2172743220
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: rspec
40
- requirement: &2156500520 !ruby/object:Gem::Requirement
40
+ requirement: &2172742760 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
43
  - - ~>
@@ -45,10 +45,10 @@ dependencies:
45
45
  version: '2.6'
46
46
  type: :development
47
47
  prerelease: false
48
- version_requirements: *2156500520
48
+ version_requirements: *2172742760
49
49
  - !ruby/object:Gem::Dependency
50
50
  name: yard
51
- requirement: &2156500000 !ruby/object:Gem::Requirement
51
+ requirement: &2172742300 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
54
  - - ~>
@@ -56,7 +56,7 @@ dependencies:
56
56
  version: '0.7'
57
57
  type: :development
58
58
  prerelease: false
59
- version_requirements: *2156500000
59
+ version_requirements: *2172742300
60
60
  description: Store all of your times in the database as UTC but want to give your
61
61
  users the ability to choose a custom time zone for each instance of a DateTime field?
62
62
  email: