Class: Adhearsion::Configuration
- Inherits:
-
Object
- Object
- Adhearsion::Configuration
- Defined in:
- lib/adhearsion/configuration.rb
Constant Summary
- ConfigurationError =
Error raised while trying to configure a non existent plugin
Class.new Adhearsion::Error
Instance Method Summary (collapse)
-
- (Loquacious::Configuration) [](value)
Direct access to a specific configuration object.
- - (Object) add_environment(env)
-
- (Object) description(name, args = {:show_values => true})
Fetchs the configuration info for the Adhearsion platform or a specific plugin.
-
- (Adhearsion::Configuration) initialize(&block)
constructor
Initialize the configuration object.
- - (Object) initialize_environments
-
- (Object) method_missing(method_name, *args, &block)
Wrapper to access to a specific configuration object.
-
- (Loquacious::Configuration) platform(&block)
Handle the Adhearsion platform configuration.
-
- (Object) root
root accessor.
- - (Boolean) valid_environment?(env)
- - (Object) valid_environments
Constructor Details
- (Adhearsion::Configuration) initialize(&block)
Initialize the configuration object
-
&block platform configuration block
Adhearsion::Configuration.new do
foo "bar", :desc => "My description"
end
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/adhearsion/configuration.rb', line 19 def initialize(&block) initialize_environments Loquacious.env_config = true Loquacious.env_prefix = "AHN" Loquacious::Configuration.for :platform do root nil, :desc => "Adhearsion application root folder" lib "lib", :desc => <<-__ Folder to include the own libraries to be used. Adhearsion loads any ruby file located into this folder during the bootstrap process. Set to nil if you do not want these files to be loaded. This folder is relative to the application root folder. __ environment :development, :transform => Proc.new { |v| v.to_sym }, :desc => <<-__ Active environment. Supported values: development, production, staging, test __ process_name "ahn", :desc => <<-__ Adhearsion process name, useful to make it easier to find in the process list Pro tip: set this to your application's name and you can do "killall myapp" Does not work under JRuby. __ desc "Log configuration" logging { level :info, :transform => Proc.new { |v| v.to_sym }, :desc => <<-__ Supported levels (in increasing severity) -- :trace < :debug < :info < :warn < :error < :fatal __ outputters ["log/adhearsion.log"], :transform => Proc.new { |val| Array(val) }, :desc => <<-__ An array of log outputters to use. The default is to log to stdout and log/adhearsion.log. Each item must be either a string to use as a filename, or a valid Logging appender (see http://github.com/TwP/logging) __ formatter nil, :desc => <<-__ A log formatter to apply to all active outputters. If nil, the Adhearsion default formatter will be used. __ } after_hangup_lifetime 30, :transform => Proc.new { |v| v.to_i }, :desc => <<-__ Lifetime of a call after it has hung up __ end Loquacious::Configuration.for :platform, &block if block_given? self end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
- (Object) method_missing(method_name, *args, &block)
Wrapper to access to a specific configuration object
Adhearsion.config.foo => returns the configuration object associated to the foo plugin
108 109 110 111 112 |
# File 'lib/adhearsion/configuration.rb', line 108 def method_missing(method_name, *args, &block) config = Loquacious::Configuration.for method_name, &block raise Adhearsion::Configuration::ConfigurationError.new "Invalid plugin #{method_name}" if config.nil? config end |
Instance Method Details
- (Loquacious::Configuration) [](value)
Direct access to a specific configuration object
Adhearsion.config => returns the configuration object associated to the Adhearsion platform
100 101 102 |
# File 'lib/adhearsion/configuration.rb', line 100 def [](value) self.send value.to_sym end |
- (Object) add_environment(env)
84 85 86 87 88 89 90 91 92 |
# File 'lib/adhearsion/configuration.rb', line 84 def add_environment(env) return if self.class.method_defined? env.to_sym self.class.send(:define_method, env.to_sym) do |*args, &block| unless block.nil? || env != self.platform.environment.to_sym self.instance_eval(&block) end self end end |
- (Object) description(name, args = {:show_values => true})
Fetchs the configuration info for the Adhearsion platform or a specific plugin
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 |
# File 'lib/adhearsion/configuration.rb', line 149 def description(name, args = {:show_values => true}) desc = StringIO.new name.nil? and name = :platform if name.eql? :all value = "" Loquacious::Configuration.instance_variable_get("@table").keys.map do |config| value.concat description config, args end return value else return "" if Loquacious::Configuration.for(name).nil? if args[:show_values] name_leader = " config.#{name}." desc_leader = " # " name_value_sep = " = " title_leader = " " else name_leader = "" desc_leader = "#" name_value_sep = " => " title_leader = "" end config = Loquacious::Configuration.help_for name, :name_leader => name_leader, :desc_leader => desc_leader, :colorize => true, :io => desc, :name_value_sep => name_value_sep config.show :values => args[:show_values] "#{title_leader}# ******* Configuration for #{name} **************\n\n#{desc.string}" end end |
- (Object) initialize_environments
68 69 70 71 72 73 74 |
# File 'lib/adhearsion/configuration.rb', line 68 def initialize_environments # Create a method per each valid environment that, when invoked, may execute # the block received if the environment is active valid_environments.each do |enviro| add_environment enviro end end |
- (Loquacious::Configuration) platform(&block)
Handle the Adhearsion platform configuration
It accepts a block that will be executed in the Adhearsion config var environment to update the desired values
Adhearsion.config.platform do
foo "bar", :desc => "My new description"
end
values = Adhearsion.config.platform values.foo => “bar”
133 134 135 |
# File 'lib/adhearsion/configuration.rb', line 133 def platform(&block) Loquacious::Configuration.for :platform, &block end |
- (Object) root
root accessor
115 116 117 |
# File 'lib/adhearsion/configuration.rb', line 115 def root platform.root end |
- (Boolean) valid_environment?(env)
76 77 78 |
# File 'lib/adhearsion/configuration.rb', line 76 def valid_environment?(env) env && self.valid_environments.include?(env.to_sym) end |
- (Object) valid_environments
80 81 82 |
# File 'lib/adhearsion/configuration.rb', line 80 def valid_environments @valid_environments ||= [:production, :development, :staging, :test] end |