Module: TrailGuide::Experiments::Lifecycle
- Included in:
- Base
- Defined in:
- lib/trail_guide/experiments/lifecycle.rb
Defined Under Namespace
Modules: ClassMethods
Class Method Summary collapse
Instance Method Summary collapse
- #calibrating? ⇒ Boolean
- #paused? ⇒ Boolean
- #paused_at ⇒ Object
- #run_callbacks(hook, *args) ⇒ Object
- #running? ⇒ Boolean
- #scheduled? ⇒ Boolean
- #start! ⇒ Object
- #started? ⇒ Boolean
- #started_at ⇒ Object
- #stopped? ⇒ Boolean
- #stopped_at ⇒ Object
- #winner? ⇒ Boolean
Class Method Details
.included(base) ⇒ Object
5 6 7 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 5 def self.included(base) base.send :extend, ClassMethods end |
Instance Method Details
#calibrating? ⇒ Boolean
188 189 190 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 188 def enable_calibration? && start_manually? && !started? end |
#paused? ⇒ Boolean
176 177 178 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 176 def paused? paused_at && paused_at <= Time.now end |
#paused_at ⇒ Object
160 161 162 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 160 def paused_at @paused_at ||= self.class.paused_at end |
#run_callbacks(hook, *args) ⇒ Object
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 129 def run_callbacks(hook, *args) return unless callbacks[hook] if [:allow_participation, :allow_conversion, :track_participation, :rollout_winner].include?(hook) callbacks[hook].reduce(args.slice!(0,1)[0]) do |result, callback| if callback.respond_to?(:call) callback.call(self, result, *args) else send(callback, self, result, *args) end end else args.unshift(self) callbacks[hook].each do |callback| if callback.respond_to?(:call) callback.call(*args) else send(callback, *args) end end end end |
#running? ⇒ Boolean
184 185 186 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 184 def running? started? && !paused? && !stopped? end |
#scheduled? ⇒ Boolean
168 169 170 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 168 def scheduled? started_at && started_at > Time.now end |
#start! ⇒ Object
151 152 153 154 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 151 def start! @started_at = nil self.class.start! end |
#started? ⇒ Boolean
172 173 174 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 172 def started? started_at && started_at <= Time.now end |
#started_at ⇒ Object
156 157 158 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 156 def started_at @started_at ||= self.class.started_at end |
#stopped? ⇒ Boolean
180 181 182 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 180 def stopped? stopped_at && stopped_at <= Time.now end |
#stopped_at ⇒ Object
164 165 166 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 164 def stopped_at @stopped_at ||= self.class.stopped_at end |
#winner? ⇒ Boolean
192 193 194 195 |
# File 'lib/trail_guide/experiments/lifecycle.rb', line 192 def winner? return @has_winner unless @has_winner.nil? @has_winner = self.class.winner? end |