Class: Bumbleworks::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/bumbleworks/configuration.rb

Overview

Stores configuration information

Configuration information is loaded from a configuration block defined within the client application.

Examples:

Standard settings

Bumbleworks.configure do |c|
  c.definitions_directory = '/path/to/ruote/definitions/directory'
  c.storage = Redis.new(:host => '127.0.0.1', :db => 0, :thread_safe => true)
  # ...
end

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Returns a new instance of Configuration.



76
77
78
# File 'lib/bumbleworks/configuration.rb', line 76

def initialize
  @storage_adapters = []
end

Instance Attribute Details

#storage_adaptersObject (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_settingsObject



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`.

Raises:

  • (ArgumentError)


129
130
131
132
133
134
135
# File 'lib/bumbleworks/configuration.rb', line 129

def add_storage_adapter(adapter)
  raise ArgumentError, "#{adapter} is not a Bumbleworks storage adapter" unless
    [:driver, :use?, :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



139
140
141
142
143
# File 'lib/bumbleworks/configuration.rb', line 139

def clear!
  defined_settings.each {|setting| instance_variable_set("@#{setting}", nil)}
  @storage_adapters = []
  @definitions_folder = @participants_folder = @tasks_folder = nil
end

#definitions_directoryObject

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.



84
85
86
# File 'lib/bumbleworks/configuration.rb', line 84

def definitions_directory
  @definitions_folder ||= default_definition_directory
end

#participants_directoryObject

Path where Bumbleworks will look for ruote participants to load. The path can be relative or absolute. Relative paths are relative to Bumbleworks.root.



92
93
94
# File 'lib/bumbleworks/configuration.rb', line 92

def participants_directory
  @participants_folder ||= default_participant_directory
end

#rootObject

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.



116
117
118
119
120
121
122
123
124
# File 'lib/bumbleworks/configuration.rb', line 116

def root
  @root ||= case
  when defined?(Rails) then Rails.root
  when defined?(Rory) then Rory.root
  when defined?(Sinatra::Application) then Sinatra::Application.root
  else
    raise UndefinedSetting.new("Bumbleworks.root must be set") unless @root
  end
end

#tasks_directoryObject

Path where Bumbleworks will look for task modules to load. The path can be relative or absolute. Relative paths are relative to Bumbleworks.root.



100
101
102
# File 'lib/bumbleworks/configuration.rb', line 100

def tasks_directory
  @tasks_folder ||= default_tasks_directory
end