Navigation Menu

Skip to content

Commit

Permalink
Rename "platform" to "core" relating to the config system
Browse files Browse the repository at this point in the history
Because "platform" is overloaded. Settings are now `config.core.*` or `AHN_CORE_*`.
  • Loading branch information
benlangfeld committed Jun 22, 2015
1 parent 6f9bc9f commit 3aaec8e
Show file tree
Hide file tree
Showing 27 changed files with 141 additions and 140 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -14,6 +14,7 @@
* No longer any dependency on Punchblock, or any mention of that name
* Change: No longer supporting FreeSWITCH via IES (Rayo only) or Asterisk < 11
* Change: Ruby 1.9 is no longer supported. Minimum supported versions are Ruby 2.2.0 and JRuby 9.0.0.0
* Change: Rename "platform" to "core" relating to the config system, because "platform" is overloaded. Settings are now `config.core.*` or `AHN_CORE_*`.
* Feature: Add i18n support via `CallController#t`
* Feature: Integrate a Rack-based HTTP server from the Virginia plugin
* Upgrade to Celluloid 0.16
Expand Down
2 changes: 1 addition & 1 deletion features/cli_create.feature
Expand Up @@ -41,7 +41,7 @@ Feature: Adhearsion Ahn CLI (Create)
"""
Adhearsion.config
logging.level
config.platform.username
config.core.username
"""
And the file "config/events.rb" should contain each of these content parts:
"""
Expand Down
6 changes: 3 additions & 3 deletions features/support/env.rb
Expand Up @@ -9,12 +9,12 @@

Before do
@aruba_timeout_seconds = ENV.has_key?('ARUBA_TIMEOUT') ? ENV['ARUBA_TIMEOUT'].to_i : (RUBY_PLATFORM == 'java' ? 60 : 30)
ENV['AHN_PLATFORM_RECONNECT_ATTEMPTS'] = '0'
ENV['AHN_PLATFORM_PORT'] = '1'
ENV['AHN_CORE_RECONNECT_ATTEMPTS'] = '0'
ENV['AHN_CORE_PORT'] = '1'
end

Before '@reconnect' do
ENV['AHN_PLATFORM_RECONNECT_ATTEMPTS'] = '100'
ENV['AHN_CORE_RECONNECT_ATTEMPTS'] = '100'
end

# TODO: check for name space / run issues
Expand Down
6 changes: 3 additions & 3 deletions lib/adhearsion.rb
Expand Up @@ -17,15 +17,15 @@ class << self
# @param[String|Pathname] The application path to set
#
def root=(path)
Adhearsion.config[:platform].root = path.nil? ? nil : File.expand_path(path)
Adhearsion.config[:core].root = path.nil? ? nil : File.expand_path(path)
end

#
# Returns the current application path
# @return [Pathname] The application path
#
def root
Adhearsion.config[:platform].root
Adhearsion.config[:core].root
end

def config(&block)
Expand All @@ -46,7 +46,7 @@ def initialize_config
puts "You tried to initialize with an invalid environment name #{env}; environment-specific config may not load successfully. Valid values are #{_config.valid_environments}."
env = nil
end
_config.platform.environment = env if env
_config.core.environment = env if env
_config
end

Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/call.rb
Expand Up @@ -245,7 +245,7 @@ def register_initial_handlers
@end_code = event.platform_code
@end_blocker.broadcast event.reason
@commands.terminate
after(@after_hangup_lifetime || Adhearsion.config.platform.after_hangup_lifetime) { terminate }
after(@after_hangup_lifetime || Adhearsion.config.core.after_hangup_lifetime) { terminate }
end
end

Expand Down
16 changes: 8 additions & 8 deletions lib/adhearsion/call_controller/input/prompt_builder.rb
Expand Up @@ -9,21 +9,21 @@ class PromptBuilder
def initialize(output_document, grammars, options)
input_options = {
mode: options[:mode] || :dtmf,
initial_timeout: timeout(options[:timeout] || Adhearsion.config.platform.media.timeout),
inter_digit_timeout: timeout(options[:inter_digit_timeout] || Adhearsion.config.platform.media.inter_digit_timeout),
max_silence: timeout(options[:timeout] || Adhearsion.config.platform.media.timeout),
min_confidence: Adhearsion.config.platform.media.min_confidence,
initial_timeout: timeout(options[:timeout] || Adhearsion.config.core.media.timeout),
inter_digit_timeout: timeout(options[:inter_digit_timeout] || Adhearsion.config.core.media.inter_digit_timeout),
max_silence: timeout(options[:timeout] || Adhearsion.config.core.media.timeout),
min_confidence: Adhearsion.config.core.media.min_confidence,
grammars: grammars,
recognizer: Adhearsion.config.platform.media.recognizer,
language: Adhearsion.config.platform.media.input_language,
recognizer: Adhearsion.config.core.media.recognizer,
language: Adhearsion.config.core.media.input_language,
terminator: options[:terminator]
}.merge(options[:input_options] || {})

@prompt = if output_document || options[:render_document]
output_options = {
render_document: options[:render_document] || {value: output_document},
renderer: Adhearsion.config.platform.media.default_renderer,
voice: Adhearsion.config.platform.media.default_voice
renderer: Adhearsion.config.core.media.default_renderer,
voice: Adhearsion.config.core.media.default_voice
}.merge(options[:output_options] || {})

Adhearsion::Rayo::Component::Prompt.new output_options, input_options, barge_in: options.has_key?(:interruptible) ? options[:interruptible] : true
Expand Down
4 changes: 2 additions & 2 deletions lib/adhearsion/call_controller/output.rb
Expand Up @@ -285,14 +285,14 @@ def t(key, options = {})
end

unless prompt.empty?
prompt = "file://#{Adhearsion.root + "/" unless Adhearsion.config.platform.i18n.audio_path.start_with?("/")}#{Adhearsion.config.platform.i18n.audio_path}/#{this_locale}/#{prompt}"
prompt = "file://#{Adhearsion.root + "/" unless Adhearsion.config.core.i18n.audio_path.start_with?("/")}#{Adhearsion.config.core.i18n.audio_path}/#{this_locale}/#{prompt}"
end

RubySpeech::SSML.draw language: this_locale do
if prompt.empty?
string text
else
if Adhearsion.config.platform.i18n.fallback
if Adhearsion.config.core.i18n.fallback
audio(src: prompt) { string text }
else
audio(src: prompt)
Expand Down
4 changes: 2 additions & 2 deletions lib/adhearsion/call_controller/output/abstract_player.rb
Expand Up @@ -26,10 +26,10 @@ def play_url(url, options = {})
def new_output(options)
defaults = {}

default_voice = Adhearsion.config.platform.media.default_voice
default_voice = Adhearsion.config.core.media.default_voice
defaults[:voice] = default_voice if default_voice

renderer = Adhearsion.config.platform.media.default_renderer
renderer = Adhearsion.config.core.media.default_renderer
defaults[:renderer] = renderer if renderer

Adhearsion::Rayo::Component::Output.new defaults.merge(options)
Expand Down
32 changes: 16 additions & 16 deletions lib/adhearsion/configuration.rb
Expand Up @@ -23,7 +23,7 @@ def self.default_port_for_platform(platform)
##
# Initialize the configuration object
#
# * &block platform configuration block
# * &block core configuration block
# Adhearsion::Configuration.new do
# foo "bar", :desc => "My description"
# end
Expand All @@ -35,7 +35,7 @@ def initialize(&block)
Loquacious.env_config = true
Loquacious.env_prefix = "AHN"

Loquacious::Configuration.for :platform do
Loquacious::Configuration.for :core do
root nil, :desc => "Adhearsion application root folder"

lib "lib", :desc => <<-__
Expand Down Expand Up @@ -121,7 +121,7 @@ def initialize(&block)
end
end

Loquacious::Configuration.for :platform, &block if block_given?
Loquacious::Configuration.for :core, &block if block_given?

self
end
Expand All @@ -145,7 +145,7 @@ def valid_environments
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
unless block.nil? || env != self.core.environment.to_sym
self.instance_eval(&block)
end
self
Expand All @@ -155,7 +155,7 @@ def add_environment(env)
##
# Direct access to a specific configuration object
#
# Adhearsion.config[:platform] => returns the configuration object associated to the Adhearsion platform
# Adhearsion.config[:core] => returns the configuration object associated with Adhearsion core
#
# @return [Loquacious::Configuration] configuration object or nil if the plugin does not exist
def [](value)
Expand All @@ -174,33 +174,33 @@ def method_missing(method_name, *args, &block)

# root accessor
def root
platform.root
core.root
end

##
# Handle the Adhearsion platform configuration
# Handle the Adhearsion core configuration
#
# It accepts a block that will be executed in the Adhearsion config var environment
# to update the desired values
#
# Adhearsion.config.platform do
# Adhearsion.config.core do
# foo "bar", :desc => "My new description"
# end
#
# values = Adhearsion.config.platform
# values = Adhearsion.config.core
# values.foo => "bar"
#
# @return [Loquacious::Configuration] configuration object or nil if the plugin does not exist
def platform(&block)
Loquacious::Configuration.for :platform, &block
def core(&block)
Loquacious::Configuration.for :core, &block
end

##
# Fetchs the configuration info for the Adhearsion platform or a specific plugin
# Fetchs the configuration info for the Adhearsion core or a specific plugin
# @param name [Symbol]
# - :all => Adhearsion platform and all the loaded plugins
# - nil => Adhearsion platform configuration
# - :platform => Adhearsion platform configuration
# - :all => Adhearsion core and all the loaded plugins
# - nil => Adhearsion core configuration
# - :core => Adhearsion core configuration
# - :<plugin-config-name> => Adhearsion plugin configuration
#
# @param args [Hash]
Expand All @@ -210,7 +210,7 @@ def platform(&block)
def description(name, args = {:show_values => true})
desc = StringIO.new

name.nil? and name = :platform
name.nil? and name = :core
if name.eql? :all
value = ""
Loquacious::Configuration.instance_variable_get("@table").keys.map do |config|
Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/events.rb
Expand Up @@ -64,7 +64,7 @@ def queue
end

def init
@queue = Worker.pool(size: Adhearsion.config.platform.event_threads)
@queue = Worker.pool(size: Adhearsion.config.core.event_threads)
end

def refresh!
Expand Down
16 changes: 8 additions & 8 deletions lib/adhearsion/generators/app/templates/adhearsion.erb
Expand Up @@ -2,7 +2,7 @@

Adhearsion.config do |config|
<% unless options[:empty] %>
# Centralized way to specify any Adhearsion platform or plugin configuration
# Centralized way to specify any Adhearsion core or plugin configuration
# - Execute rake config:show to view the active configuration values
#
# To update a plugin configuration you can write either:
Expand All @@ -18,20 +18,20 @@ Adhearsion.config do |config|
# end
<% end %>
config.development do |dev|
dev.platform.logging.level = :debug
dev.core.logging.level = :debug
end

##
# Use with Rayo over XMPP (eg Voxeo PRISM or FreeSWITCH mod_rayo)
#
# config.platform.username = "usera@freeswitch.local-dev.mojolingo.com" # Your XMPP JID for use with Rayo
# config.platform.password = "1" # Your XMPP password
# config.core.username = "usera@freeswitch.local-dev.mojolingo.com" # Your XMPP JID for use with Rayo
# config.core.password = "1" # Your XMPP password

##
# Use with Asterisk
#
# config.platform.type = :asterisk # Use Asterisk
# config.platform.username = "manager" # Your AMI username
# config.platform.password = "password" # Your AMI password
# config.platform.host = "asterisk.local-dev.mojolingo.com" # Your AMI host
# config.core.type = :asterisk # Use Asterisk
# config.core.username = "manager" # Your AMI username
# config.core.password = "password" # Your AMI password
# config.core.host = "asterisk.local-dev.mojolingo.com" # Your AMI host
end
2 changes: 1 addition & 1 deletion lib/adhearsion/http_server.rb
Expand Up @@ -7,7 +7,7 @@ module Adhearsion
# @private
class HTTPServer
def self.start
config = Adhearsion.config.platform.http
config = Adhearsion.config.core.http

return unless config.enable

Expand Down
12 changes: 6 additions & 6 deletions lib/adhearsion/initializer.rb
Expand Up @@ -50,7 +50,7 @@ def start

Adhearsion::Process.booted if Adhearsion.status == :booting

logger.info "Adhearsion v#{Adhearsion::VERSION} initialized in \"#{Adhearsion.config.platform.environment}\"!" if Adhearsion.status == :running
logger.info "Adhearsion v#{Adhearsion::VERSION} initialized in \"#{Adhearsion.config.core.environment}\"!" if Adhearsion.status == :running
end

# This method will block until all important threads have finished.
Expand All @@ -75,7 +75,7 @@ def debugging_log
end

def setup_i18n_load_path
Adhearsion.config.platform.i18n.locale_path.each do |dir|
Adhearsion.config.core.i18n.locale_path.each do |dir|
logger.debug "Adding #{dir} to the I18n load path"
I18n.load_path += Dir["#{dir}/**/*.yml"]
end
Expand Down Expand Up @@ -122,9 +122,9 @@ def handle_signal(signal)
# Loads files in application lib folder
# @return [Boolean] if files have been loaded (lib folder is configured to not nil and actually exists)
def load_lib_folder
return false if Adhearsion.config.platform.lib.nil?
return false if Adhearsion.config.core.lib.nil?

lib_folder = [Adhearsion.config.platform.root, Adhearsion.config.platform.lib].join '/'
lib_folder = [Adhearsion.config.core.root, Adhearsion.config.core.lib].join '/'
return false unless File.directory? lib_folder

$LOAD_PATH.unshift lib_folder
Expand Down Expand Up @@ -178,7 +178,7 @@ def launch_console
end

def start_logging
Adhearsion::Logging.start Adhearsion.config.platform.logging.level, Adhearsion.config.platform.logging.formatter
Adhearsion::Logging.start Adhearsion.config.core.logging.level, Adhearsion.config.core.logging.formatter
end

def initialize_exception_logger
Expand All @@ -188,7 +188,7 @@ def initialize_exception_logger
end

def set_ahn_proc_name
Adhearsion::LinuxProcName.set_proc_name Adhearsion.config.platform.process_name
Adhearsion::LinuxProcName.set_proc_name Adhearsion.config.core.process_name
end

def trigger_after_initialized_hooks
Expand Down
6 changes: 3 additions & 3 deletions lib/adhearsion/logging.rb
Expand Up @@ -48,18 +48,18 @@ def silence!

# Restore the default configured logging level
def unsilence!
self.logging_level = Adhearsion.config.platform.logging['level']
self.logging_level = Adhearsion.config.core.logging['level']
end

# Toggle between the configured log level and :trace
# Useful for debugging a live Adhearsion instance
def toggle_trace!
if level == ::Logging.level_num(Adhearsion.config.platform.logging['level'])
if level == ::Logging.level_num(Adhearsion.config.core.logging['level'])
logger.warn "Turning TRACE logging ON."
self.level = :trace
else
logger.warn "Turning TRACE logging OFF."
self.level = Adhearsion.config.platform.logging['level']
self.level = Adhearsion.config.core.logging['level']
end
end

Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/rayo/initializer.rb
Expand Up @@ -12,7 +12,7 @@ class Initializer

class << self
def init
self.config = Adhearsion.config.platform
self.config = Adhearsion.config.core

username = self.config.username
if (self.config.type || :xmpp) == :xmpp
Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/tasks.rb
Expand Up @@ -17,7 +17,7 @@

Adhearsion::Plugin.load_tasks

puts "\nAdhearsion configured environment: #{Adhearsion.config.platform.environment}\n" unless ARGV.empty?
puts "\nAdhearsion configured environment: #{Adhearsion.config.core.environment}\n" unless ARGV.empty?

desc "Dump useful information about this application's Adhearsion environment"
task :about do
Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/tasks/configuration.rb
@@ -1,7 +1,7 @@
# encoding: utf-8

namespace :config do
desc "Show configuration values; accepts a parameter: [nil|platform|<plugin-name>|all]"
desc "Show configuration values; accepts a parameter: [nil|core|<plugin-name>|all]"
task :show, [:name] => [:environment] do |t, args|
name = args.name.nil? ? :all : args.name.to_sym
puts "\nAdhearsion.config do |config|\n\n"
Expand Down
2 changes: 1 addition & 1 deletion lib/adhearsion/tasks/i18n.rb
Expand Up @@ -5,7 +5,7 @@
task :validate_files => :environment do
Adhearsion::Initializer.new.setup_i18n_load_path

config = Adhearsion.config.platform.i18n
config = Adhearsion.config.core.i18n
locale_files = Dir.glob(I18n.load_path)

locale_errors = {}
Expand Down

0 comments on commit 3aaec8e

Please sign in to comment.