trice 0.1.1 → 0.2.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.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b9097c61e695a9f53208d64b12cade17d4d2fe89
|
4
|
+
data.tar.gz: 167602e225951b8c6dceb09f0e9cb872818af6aa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c5040644cbc271721d2c439e194fa88ccf1091e33bb4617e9566975077c758eaa53a9c7ca13446f705d610ed0f0c18cb4ad342ee412de1cc25ac6a456a0f8956
|
7
|
+
data.tar.gz: 8c1cf24577b05add0576ec7c1c97e7e1168564381d3cf46756e87ad2a5abd86ac232f886053b1a0e6ac3828d55fbacc432627b783cad9eb85698119aa26842e9
|
data/README.md
CHANGED
@@ -22,7 +22,7 @@ $ bundle
|
|
22
22
|
|
23
23
|
### With Rails controller
|
24
24
|
|
25
|
-
This gem aims to serve consistency of time handling using
|
25
|
+
This gem aims to serve consistency of time handling using reference time to Rails application.
|
26
26
|
The layer which should set reference time is controller layer, because reference time is one of external input.
|
27
27
|
|
28
28
|
Include `Trice::ControllerMethods` to your controller
|
@@ -55,23 +55,23 @@ end
|
|
55
55
|
|
56
56
|
### Setting consistent reference time
|
57
57
|
|
58
|
-
Set reference time with `Trice.
|
58
|
+
Set reference time with `Trice.reference_time = _time_` or `Trice.with_reference_time(_time_, &block)`.
|
59
59
|
Accessible by `Trice.reference_time`..
|
60
60
|
|
61
61
|
```ruby
|
62
62
|
p Time.now
|
63
63
|
=> 2016-02-01 11:25:37 +0900
|
64
64
|
|
65
|
-
Trice.
|
65
|
+
Trice.with_reference_time = Time.iso8601('2016-02-01T09:00:00Z')
|
66
66
|
p Trice.reference_time
|
67
67
|
# => 2016-02-01 09:00:00 UTC
|
68
68
|
|
69
|
-
Trice.
|
69
|
+
Trice.with_reference_time(Time.iso8601('2016-02-01T10:00:00Z')) do
|
70
70
|
p Trice.reference_time
|
71
71
|
# => 2016-02-01 10:00:00 UTC
|
72
72
|
end
|
73
73
|
|
74
|
-
Trice.
|
74
|
+
Trice.with_reference_time = nil
|
75
75
|
p Trice.reference_time
|
76
76
|
# => raise Trice::NoReferenceTime
|
77
77
|
```
|
@@ -127,13 +127,13 @@ end
|
|
127
127
|
I recommend to pass reference time to a model by method and/or constructor argument because reference time is an external input, should be handled controller layer.
|
128
128
|
But sometimes it is required from deep inside of model logics and tests for them.
|
129
129
|
|
130
|
-
Model unit spec has `
|
130
|
+
Model unit spec has `with_reference_time` and `set_now_to_reference_time` declarition method to set `Trice.reference_time` in an example.
|
131
131
|
|
132
132
|
```ruby
|
133
133
|
describe MyModel do
|
134
134
|
let(:reference_time) { Time.zone.parse('2016/02/03 12:00') }
|
135
135
|
context do
|
136
|
-
set_reference_time {
|
136
|
+
set_reference_time { reference_time }
|
137
137
|
|
138
138
|
let(:model) { MyModel.find_by_something(key) }
|
139
139
|
|
@@ -174,4 +174,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/cookpa
|
|
174
174
|
## License
|
175
175
|
|
176
176
|
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
177
|
-
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'trice/controller_methods/raw_reference_time'
|
1
2
|
require 'trice/controller_methods/reference_time_assignment'
|
2
3
|
require 'trice/controller_methods/stub_configuration'
|
3
4
|
|
@@ -8,6 +9,10 @@ module Trice
|
|
8
9
|
|
9
10
|
included do |controller|
|
10
11
|
if controller.ancestors.include?(ActionController::Base)
|
12
|
+
unless controller.middleware_stack.include?(RawReferenceTime)
|
13
|
+
controller.use RawReferenceTime
|
14
|
+
end
|
15
|
+
|
11
16
|
config = StubConfiguration.new(Trice.support_requested_at_stubbing)
|
12
17
|
prepend_around_action ReferenceTimeAssignment.new(config)
|
13
18
|
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Trice
|
2
|
+
module ControllerMethods
|
3
|
+
class RawReferenceTime
|
4
|
+
ENV_KEY = 'trice.raw_reference_time'.freeze
|
5
|
+
|
6
|
+
def initialize(app)
|
7
|
+
@app = app
|
8
|
+
end
|
9
|
+
|
10
|
+
def call(env)
|
11
|
+
env[ENV_KEY] = Time.now
|
12
|
+
|
13
|
+
Trice.with_reference_time(env[ENV_KEY]) { @app.call(env) }
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/trice/spec_helper.rb
CHANGED
data/lib/trice/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: trice
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- moro
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -126,6 +126,7 @@ files:
|
|
126
126
|
- bin/setup
|
127
127
|
- lib/trice.rb
|
128
128
|
- lib/trice/controller_methods.rb
|
129
|
+
- lib/trice/controller_methods/raw_reference_time.rb
|
129
130
|
- lib/trice/controller_methods/reference_time_assignment.rb
|
130
131
|
- lib/trice/controller_methods/stub_configuration.rb
|
131
132
|
- lib/trice/errors.rb
|