greenwich 1.0.0 → 2.0.0

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.
data/.gitignore CHANGED
@@ -1,9 +1,9 @@
1
1
  *.gem
2
2
  *.rbc
3
+ *.sqlite
3
4
  .bundle
4
5
  .config
5
6
  .yardoc
6
- Gemfile.lock
7
7
  _yardoc
8
8
  coverage
9
9
  lib/bundler/man
data/.rspec CHANGED
@@ -1 +1,2 @@
1
1
  --color
2
+ --format Fuubar
@@ -0,0 +1,68 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ greenwich (2.0.0)
5
+ activerecord (~> 3.0)
6
+ activesupport (~> 3.0)
7
+ tzinfo (~> 0.3)
8
+
9
+ GEM
10
+ remote: http://rubygems.org/
11
+ specs:
12
+ activemodel (3.2.8)
13
+ activesupport (= 3.2.8)
14
+ builder (~> 3.0.0)
15
+ activerecord (3.2.8)
16
+ activemodel (= 3.2.8)
17
+ activesupport (= 3.2.8)
18
+ arel (~> 3.0.2)
19
+ tzinfo (~> 0.3.29)
20
+ activesupport (3.2.8)
21
+ i18n (~> 0.6)
22
+ multi_json (~> 1.0)
23
+ arel (3.0.2)
24
+ awesome_print (1.1.0)
25
+ builder (3.0.0)
26
+ diff-lcs (1.1.3)
27
+ fuubar (1.1.0)
28
+ rspec (~> 2.0)
29
+ rspec-instafail (~> 0.2.0)
30
+ ruby-progressbar (~> 1.0.0)
31
+ guard (1.4.0)
32
+ listen (>= 0.4.2)
33
+ thor (>= 0.14.6)
34
+ guard-rspec (2.0.0)
35
+ guard (>= 1.1)
36
+ rspec (~> 2.11)
37
+ i18n (0.6.0)
38
+ listen (0.5.3)
39
+ multi_json (1.3.6)
40
+ rake (0.9.2.2)
41
+ rb-fsevent (0.9.2)
42
+ rspec (2.11.0)
43
+ rspec-core (~> 2.11.0)
44
+ rspec-expectations (~> 2.11.0)
45
+ rspec-mocks (~> 2.11.0)
46
+ rspec-core (2.11.1)
47
+ rspec-expectations (2.11.3)
48
+ diff-lcs (~> 1.1.3)
49
+ rspec-instafail (0.2.4)
50
+ rspec-mocks (2.11.3)
51
+ ruby-progressbar (1.0.2)
52
+ sqlite3 (1.3.6)
53
+ thor (0.16.0)
54
+ tzinfo (0.3.33)
55
+
56
+ PLATFORMS
57
+ ruby
58
+
59
+ DEPENDENCIES
60
+ awesome_print (~> 1.1.0)
61
+ fuubar (~> 1.0)
62
+ greenwich!
63
+ guard (~> 1.4.0)
64
+ guard-rspec (~> 2.0.0)
65
+ rake
66
+ rb-fsevent (~> 0.9.1)
67
+ rspec (~> 2.11)
68
+ sqlite3 (~> 1.3)
@@ -0,0 +1,15 @@
1
+ notification :tmux,
2
+ :success => 'colour22',
3
+ :failed => 'colour52',
4
+ :display_message => true
5
+
6
+ guard 'rspec',
7
+ all_on_start: true,
8
+ all_after_pass: true,
9
+ cli: '--format Fuubar',
10
+ notification: true do
11
+
12
+ watch(%r{^(spec\/.+_spec\.rb)$}) { |m| m[1] }
13
+ watch(%r{^lib/greenwich\.rb$}) { |m| "spec/greenwich_spec.rb" }
14
+ watch(%r{^lib/greenwich/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
15
+ end
@@ -32,9 +32,11 @@ Gem::Specification.new do |s|
32
32
  s.add_dependency('activesupport', '~> 3.0')
33
33
  s.add_dependency('tzinfo', '~> 0.3')
34
34
 
35
- s.add_development_dependency('bundler', '~> 1.0')
36
- s.add_development_dependency('rspec', '~> 2.6')
37
- s.add_development_dependency('yard', '~> 0.7')
38
- s.add_development_dependency('sqlite3', '~> 1.3')
39
- s.add_development_dependency('pry')
35
+ s.add_development_dependency 'rspec', '~> 2.11'
36
+ s.add_development_dependency 'fuubar', '~> 1.0'
37
+ s.add_development_dependency 'guard', '~> 1.4.0'
38
+ s.add_development_dependency 'guard-rspec', '~> 2.0.0'
39
+ s.add_development_dependency 'rb-fsevent', '~> 0.9.1'
40
+ s.add_development_dependency 'awesome_print', '~> 1.1.0'
41
+ s.add_development_dependency 'sqlite3', '~> 1.3'
40
42
  end
@@ -5,6 +5,7 @@ module Greenwich
5
5
  module ClassMethods
6
6
  def time_with_time_zone(utc_time_field, options = {})
7
7
  time_field = utc_time_field.to_s.gsub /_utc$/, ''
8
+ date_field = time_field.gsub(/_at\Z/, '_on')
8
9
  time_zone_field = options[:time_zone] || "#{time_field}_time_zone"
9
10
 
10
11
  class_eval do
@@ -35,6 +36,12 @@ module Greenwich
35
36
  write_attribute(utc_time_field, time)
36
37
  end
37
38
 
39
+ define_method date_field do
40
+ return nil unless send(:"#{time_field}").respond_to? :to_date
41
+
42
+ send(:"#{time_field}").to_date
43
+ end
44
+
38
45
  time_zone time_zone_field.to_sym, :for => utc_time_field.to_sym
39
46
  end
40
47
 
@@ -1,3 +1,3 @@
1
1
  module Greenwich
2
- VERSION = "1.0.0"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
- require 'pry'
3
2
 
4
3
  root = File.expand_path(File.join(File.dirname(__FILE__), '../..'))
5
4
  db_root = File.join(root, 'db')
6
5
 
7
6
  Dir.mkdir(db_root) unless File.exists?(db_root)
8
7
  ActiveRecord::Base.establish_connection(:adapter => 'sqlite3',
9
- :database => "#{db_root}/conversion.db")
8
+ :database => "#{db_root}/conversion.sqlite")
10
9
 
11
10
  ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS 'model_with_time_zones'")
12
11
  ActiveRecord::Base.connection.create_table(:model_with_time_zones) do |t|
@@ -43,6 +42,48 @@ describe Greenwich::Conversion do
43
42
  end
44
43
  end
45
44
 
45
+ describe '#date_field' do
46
+ let(:model) { ModelWithTimeZone.new }
47
+ let(:alaskan_time_zone) { ActiveSupport::TimeZone.new('Alaska') }
48
+ let(:raw_time_field) { model.send(:read_attribute, :started_at_utc) }
49
+
50
+ context 'when the time field is set' do
51
+ before { model.started_at_utc = Time.utc(2012, 1, 2, 2, 59, 1) }
52
+
53
+ context 'and the time zone is set' do
54
+ before { model.time_zone = alaskan_time_zone }
55
+
56
+ it 'is the proper date' do
57
+ model.started_on.should eql Date.new(2012, 1, 1)
58
+ end
59
+ end
60
+
61
+ context 'and the time zone is not set' do
62
+ it 'uses the default time zone to calculate the date' do
63
+ model.started_on.should eql Date.new(2012, 1, 2)
64
+ end
65
+ end
66
+ end
67
+
68
+ context 'when the time field is not set' do
69
+ before { model.started_at_utc = nil }
70
+
71
+ context 'and the time zone is set' do
72
+ before { model.time_zone = alaskan_time_zone }
73
+
74
+ it 'is nil' do
75
+ model.started_on.should be_nil
76
+ end
77
+ end
78
+
79
+ context 'and the time zone is not set' do
80
+ it 'is nil' do
81
+ model.started_on.should be_nil
82
+ end
83
+ end
84
+ end
85
+ end
86
+
46
87
  describe '#time_field_utc=' do
47
88
  let(:model) { ModelWithTimeZone.new }
48
89
  let(:alaskan_time_zone) { ActiveSupport::TimeZone.new('Alaska') }
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: 1.0.0
4
+ version: 2.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2012-08-24 00:00:00.000000000 Z
13
+ date: 2012-10-18 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord
@@ -61,7 +61,23 @@ dependencies:
61
61
  - !ruby/object:Gem::Version
62
62
  version: '0.3'
63
63
  - !ruby/object:Gem::Dependency
64
- name: bundler
64
+ name: rspec
65
+ requirement: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ~>
69
+ - !ruby/object:Gem::Version
70
+ version: '2.11'
71
+ type: :development
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ none: false
75
+ requirements:
76
+ - - ~>
77
+ - !ruby/object:Gem::Version
78
+ version: '2.11'
79
+ - !ruby/object:Gem::Dependency
80
+ name: fuubar
65
81
  requirement: !ruby/object:Gem::Requirement
66
82
  none: false
67
83
  requirements:
@@ -77,13 +93,13 @@ dependencies:
77
93
  - !ruby/object:Gem::Version
78
94
  version: '1.0'
79
95
  - !ruby/object:Gem::Dependency
80
- name: rspec
96
+ name: guard
81
97
  requirement: !ruby/object:Gem::Requirement
82
98
  none: false
83
99
  requirements:
84
100
  - - ~>
85
101
  - !ruby/object:Gem::Version
86
- version: '2.6'
102
+ version: 1.4.0
87
103
  type: :development
88
104
  prerelease: false
89
105
  version_requirements: !ruby/object:Gem::Requirement
@@ -91,15 +107,15 @@ dependencies:
91
107
  requirements:
92
108
  - - ~>
93
109
  - !ruby/object:Gem::Version
94
- version: '2.6'
110
+ version: 1.4.0
95
111
  - !ruby/object:Gem::Dependency
96
- name: yard
112
+ name: guard-rspec
97
113
  requirement: !ruby/object:Gem::Requirement
98
114
  none: false
99
115
  requirements:
100
116
  - - ~>
101
117
  - !ruby/object:Gem::Version
102
- version: '0.7'
118
+ version: 2.0.0
103
119
  type: :development
104
120
  prerelease: false
105
121
  version_requirements: !ruby/object:Gem::Requirement
@@ -107,15 +123,15 @@ dependencies:
107
123
  requirements:
108
124
  - - ~>
109
125
  - !ruby/object:Gem::Version
110
- version: '0.7'
126
+ version: 2.0.0
111
127
  - !ruby/object:Gem::Dependency
112
- name: sqlite3
128
+ name: rb-fsevent
113
129
  requirement: !ruby/object:Gem::Requirement
114
130
  none: false
115
131
  requirements:
116
132
  - - ~>
117
133
  - !ruby/object:Gem::Version
118
- version: '1.3'
134
+ version: 0.9.1
119
135
  type: :development
120
136
  prerelease: false
121
137
  version_requirements: !ruby/object:Gem::Requirement
@@ -123,23 +139,39 @@ dependencies:
123
139
  requirements:
124
140
  - - ~>
125
141
  - !ruby/object:Gem::Version
126
- version: '1.3'
142
+ version: 0.9.1
127
143
  - !ruby/object:Gem::Dependency
128
- name: pry
144
+ name: awesome_print
129
145
  requirement: !ruby/object:Gem::Requirement
130
146
  none: false
131
147
  requirements:
132
- - - ! '>='
148
+ - - ~>
149
+ - !ruby/object:Gem::Version
150
+ version: 1.1.0
151
+ type: :development
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ none: false
155
+ requirements:
156
+ - - ~>
157
+ - !ruby/object:Gem::Version
158
+ version: 1.1.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: sqlite3
161
+ requirement: !ruby/object:Gem::Requirement
162
+ none: false
163
+ requirements:
164
+ - - ~>
133
165
  - !ruby/object:Gem::Version
134
- version: '0'
166
+ version: '1.3'
135
167
  type: :development
136
168
  prerelease: false
137
169
  version_requirements: !ruby/object:Gem::Requirement
138
170
  none: false
139
171
  requirements:
140
- - - ! '>='
172
+ - - ~>
141
173
  - !ruby/object:Gem::Version
142
- version: '0'
174
+ version: '1.3'
143
175
  description: Store all of your times in the database as UTC but want to give your
144
176
  users the ability to choose a custom time zone for each instance of a DateTime field?
145
177
  email:
@@ -154,6 +186,8 @@ files:
154
186
  - .rspec
155
187
  - .rvmrc
156
188
  - Gemfile
189
+ - Gemfile.lock
190
+ - Guardfile
157
191
  - LICENSE
158
192
  - README.md
159
193
  - Rakefile
@@ -163,11 +197,11 @@ files:
163
197
  - lib/greenwich/time_zone.rb
164
198
  - lib/greenwich/utilities.rb
165
199
  - lib/greenwich/version.rb
166
- - spec/greenwich/conversion_spec.rb
167
- - spec/greenwich/utilities_spec.rb
200
+ - spec/conversion_spec.rb
168
201
  - spec/spec_helper.rb
169
202
  - spec/support/focused.rb
170
203
  - spec/support/pending.rb
204
+ - spec/utilities_spec.rb
171
205
  homepage: http://github.com/chirrpy/greenwich
172
206
  licenses: []
173
207
  post_install_message:
@@ -181,18 +215,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
181
215
  - - ! '>='
182
216
  - !ruby/object:Gem::Version
183
217
  version: '0'
184
- segments:
185
- - 0
186
- hash: -1444067313011442519
187
218
  required_rubygems_version: !ruby/object:Gem::Requirement
188
219
  none: false
189
220
  requirements:
190
221
  - - ! '>='
191
222
  - !ruby/object:Gem::Version
192
223
  version: '0'
193
- segments:
194
- - 0
195
- hash: -1444067313011442519
196
224
  requirements: []
197
225
  rubyforge_project: greenwich
198
226
  rubygems_version: 1.8.24
@@ -200,9 +228,9 @@ signing_key:
200
228
  specification_version: 3
201
229
  summary: Allowing users to select dates with custom time zones since 2011.
202
230
  test_files:
203
- - spec/greenwich/conversion_spec.rb
204
- - spec/greenwich/utilities_spec.rb
231
+ - spec/conversion_spec.rb
205
232
  - spec/spec_helper.rb
206
233
  - spec/support/focused.rb
207
234
  - spec/support/pending.rb
235
+ - spec/utilities_spec.rb
208
236
  has_rdoc: