greenwich 1.0.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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: