lib/isolate/scenarios.rb in isolate-scenarios-0.0.2 vs lib/isolate/scenarios.rb in isolate-scenarios-0.1.0
- old
+ new
@@ -1,12 +1,32 @@
require 'isolate'
-require 'isolate/scenarios/sandbox'
+require 'isolate/scenarios/extensions'
require 'isolate/scenarios/cli'
-module Isolate
- module Scenarios
- def self.now!
- @@sandbox = Isolate::Scenarios::Sandbox.new
- @@sandbox.activate
+Isolate::Entry.class_eval do
+ include Isolate::Scenarios::Entry
+end
+
+Isolate::Sandbox.class_eval do
+ include Isolate::Scenarios::Entry
+end
+
+Isolate::Events.watch(Isolate::Sandbox, :activating) do |sandbox|
+ sandbox.entries.each do |entry|
+ if entry.scenarios
+ selected_scenario_version = if ENV[entry.scenario_env_variable]
+ entry.scenarios.detect do |scenario|
+ ENV[entry.scenario_env_variable] == "#{entry.name}-#{scenario}"
+ end
+ elsif entry.default_scenario
+ entry.default_scenario
+ else
+ entry.scenarios.last
+ end
+
+ if selected_scenario_version
+ puts "Activating#{' default' if entry.default_scenario == selected_scenario_version} scenario: #{entry.name}-#{selected_scenario_version}"
+ entry.update(selected_scenario_version)
+ end
end
end
end