Sha256: c315bd52dd2dda0fd2fd270e4f21b810c98465a7bead6b5e708146c7103e731b

Contents?: true

Size: 1.78 KB

Versions: 18

Compression:

Stored size: 1.78 KB

Contents

# TODO: Have all of the initializer modules required and then traverse the subclasses, asking them if they're enabled. If they are enabled, then they should do their initialization stuff. Is this really necessary to develop this entirely new system when the components system exists?

module Adhearsion
  class Initializer

    class DatabaseInitializer

      class << self

        def start
          require_dependencies
          require_models
          @@config = Adhearsion::AHN_CONFIG.database
          # You may need to uncomment the following line for older versions of ActiveRecord
          # ActiveRecord::Base.allow_concurrency = true
          establish_connection
          ActiveRecord::Base.logger =
            @@config.connection_options.has_key?(:logger) ?
              @@config.connection_options[:logger] :
              ahn_log.db
          create_call_hook_for_connection_cleanup
        end

        def stop
          ActiveRecord::Base.remove_connection
        end

        private

        def create_call_hook_for_connection_cleanup
          Events.register_callback([:asterisk, :before_call]) do
            ActiveRecord::Base.verify_active_connections!
          end
        end

        def require_dependencies
          begin
            require 'active_record'
          rescue LoadError
            ahn_log.fatal "Database support requires the \"activerecord\" gem."
            # Silence the abort so we don't get an ugly backtrace
            abort ""
          end
        end

        def require_models
          AHN_CONFIG.files_from_setting("paths", "models").each do |model|
            load model
          end
        end

        def establish_connection
          ActiveRecord::Base.establish_connection @@config.connection_options
        end

      end
    end

  end
end

Version data entries

18 entries across 18 versions & 3 rubygems

Version Path
adhearsion-1.2.6 lib/adhearsion/initializer/database.rb
adhearsion-1.2.5 lib/adhearsion/initializer/database.rb
adhearsion-1.2.4 lib/adhearsion/initializer/database.rb
adhearsion-1.2.3 lib/adhearsion/initializer/database.rb
adhearsion-1.2.1 lib/adhearsion/initializer/database.rb
adhearsion-1.2.0 lib/adhearsion/initializer/database.rb
adhearsion-1.1.1 lib/adhearsion/initializer/database.rb
adhearsion-1.1.0 lib/adhearsion/initializer/database.rb
adhearsion-1.0.3 lib/adhearsion/initializer/database.rb
adhearsion-1.0.2 lib/adhearsion/initializer/database.rb
adhearsion-cw-1.0.2.3 lib/adhearsion/initializer/database.rb
adhearsion-cw-1.0.2.2 lib/adhearsion/initializer/database.rb
adhearsion-cw-1.0.2.1 lib/adhearsion/initializer/database.rb
adhearsion-1.0.1 lib/adhearsion/initializer/database.rb
adhearsion-1.0.0 lib/adhearsion/initializer/database.rb
rene-adhearsion-0.8.6 lib/adhearsion/initializer/database.rb
adhearsion-0.8.6 lib/adhearsion/initializer/database.rb
adhearsion-0.8.5 lib/adhearsion/initializer/database.rb