Class: Bumbleworks::Configuration
- Inherits:
-
Object
- Object
- Bumbleworks::Configuration
- Defined in:
- lib/bumbleworks/configuration.rb
Overview
Stores configuration information
Configuration information is loaded from a configuration block defined within the client application.
Instance Attribute Summary collapse
-
#storage_adapters ⇒ Object
readonly
Returns the value of attribute storage_adapters.
Class Method Summary collapse
Instance Method Summary collapse
-
#add_storage_adapter(adapter) ⇒ Object
Add a storage adapter to the set of possible adapters.
-
#clear! ⇒ Object
Clears all memoize variables and configuration settings.
-
#definitions_directory ⇒ Object
Path where Bumbleworks will look for ruote process defintiions to load.
- #error_handlers ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #logger ⇒ Object
- #observers ⇒ Object
-
#participants_directory ⇒ Object
Path where Bumbleworks will look for ruote participants to load.
-
#root ⇒ Object
Root folder where Bumbleworks looks for ruote assets (participants, process_definitions, etc.) The root path must be absolute.
-
#storage_adapter ⇒ Object
If storage_adapter is not explicitly set, find first registered adapter that can use Bumbleworks.storage.
-
#store_history ⇒ Object
Default history storage to true.
-
#tasks_directory ⇒ Object
Path where Bumbleworks will look for task modules to load.
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
138 139 140 141 |
# File 'lib/bumbleworks/configuration.rb', line 138 def initialize @storage_adapters = [] @timeout ||= 5 end |
Instance Attribute Details
#storage_adapters ⇒ Object (readonly)
Returns the value of attribute storage_adapters.
15 16 17 |
# File 'lib/bumbleworks/configuration.rb', line 15 def storage_adapters @storage_adapters end |
Class Method Details
.define_setting(name) ⇒ Object
18 19 20 21 |
# File 'lib/bumbleworks/configuration.rb', line 18 def define_setting(name) defined_settings << name attr_accessor name end |
.defined_settings ⇒ Object
23 24 25 |
# File 'lib/bumbleworks/configuration.rb', line 23 def defined_settings @defined_settings ||= [] end |
Instance Method Details
#add_storage_adapter(adapter) ⇒ Object
Add a storage adapter to the set of possible adapters. Takes an object that responds to ‘driver`, `use?`, `storage_class`, and `display_name`.
198 199 200 201 202 203 204 |
# File 'lib/bumbleworks/configuration.rb', line 198 def add_storage_adapter(adapter) raise ArgumentError, "#{adapter} is not a Bumbleworks storage adapter" unless [:driver, :use?, :new_storage, :allow_history_storage?, :storage_class, :display_name].all? { |m| adapter.respond_to?(m) } @storage_adapters << adapter @storage_adapters end |
#clear! ⇒ Object
Clears all memoize variables and configuration settings
231 232 233 234 235 |
# File 'lib/bumbleworks/configuration.rb', line 231 def clear! defined_settings.each {|setting| instance_variable_set("@#{setting}", nil)} @storage_adapters = [] @definitions_folder = @participants_folder = @tasks_folder = nil end |
#definitions_directory ⇒ Object
Path where Bumbleworks will look for ruote process defintiions to load. The path can be relative or absolute. Relative paths are relative to Bumbleworks.root.
147 148 149 |
# File 'lib/bumbleworks/configuration.rb', line 147 def definitions_directory @definitions_folder ||= default_definition_directory end |
#error_handlers ⇒ Object
237 238 239 |
# File 'lib/bumbleworks/configuration.rb', line 237 def error_handlers @error_handlers ||= [Bumbleworks::ErrorLogger] end |
#logger ⇒ Object
221 222 223 |
# File 'lib/bumbleworks/configuration.rb', line 221 def logger @logger ||= Bumbleworks::SimpleLogger end |
#observers ⇒ Object
225 226 227 |
# File 'lib/bumbleworks/configuration.rb', line 225 def observers @observers ||= [] end |
#participants_directory ⇒ Object
Path where Bumbleworks will look for ruote participants to load. The path can be relative or absolute. Relative paths are relative to Bumbleworks.root.
155 156 157 |
# File 'lib/bumbleworks/configuration.rb', line 155 def participants_directory @participants_folder ||= default_participant_directory end |
#root ⇒ Object
Root folder where Bumbleworks looks for ruote assets (participants, process_definitions, etc.) The root path must be absolute. It can be defined through a configuration block:
Bumbleworks.configure { |c| c.root = '/somewhere' }
Or directly:
Bumbleworks.root = '/somewhere/else/'
If the root is not defined, Bumbleworks will use the root of known frameworks (Rails, Sinatra and Rory). Otherwise, it will raise an error if not defined.
184 185 186 187 188 189 190 191 192 193 |
# File 'lib/bumbleworks/configuration.rb', line 184 def root @root ||= case when defined?(Rails) then Rails.root when defined?(Rory) then Rory.root when defined?(Padrino) then Padrino.root when defined?(Sinatra::Application) then Sinatra::Application.root end raise UndefinedSetting.new("Bumbleworks.root must be set") unless @root @root end |
#storage_adapter ⇒ Object
If storage_adapter is not explicitly set, find first registered adapter that can use Bumbleworks.storage.
209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/bumbleworks/configuration.rb', line 209 def storage_adapter @storage_adapter ||= begin all_adapters = storage_adapters raise UndefinedSetting, "No storage adapters configured" if all_adapters.empty? adapter = all_adapters.detect do |potential_adapter| potential_adapter.use?(storage) end raise UndefinedSetting, "Storage is missing or not supported. Supported: #{all_adapters.map(&:display_name).join(', ')}" unless adapter adapter end end |
#store_history ⇒ Object
Default history storage to true
168 169 170 |
# File 'lib/bumbleworks/configuration.rb', line 168 def store_history @store_history.nil? ? true : @store_history end |
#tasks_directory ⇒ Object
Path where Bumbleworks will look for task modules to load. The path can be relative or absolute. Relative paths are relative to Bumbleworks.root.
163 164 165 |
# File 'lib/bumbleworks/configuration.rb', line 163 def tasks_directory @tasks_folder ||= default_tasks_directory end |