class Hippo::Configuration

Attributes

secrets[R]

Public Class Methods

apply() click to toggle source
# File lib/hippo/configuration.rb, line 53
def self.apply
    Oj.default_options = { mode: :rails, time_format: :xmlschema }

    controlling_ext = Hippo::Extensions.bootstrap
    secrets = controlling_ext.root_path.join('config', 'secrets.yml')

    @@secrets = Hashie::Mash.new(
        secrets.exist? ? YAML.load(ERB.new(secrets.read).result) : {}
    )

    ActiveJob::Base.queue_adapter = Hippo.env.test? ? :test : :resque
    Hippo::Job::FailureLogger.configure

    DB.establish_connection

    Jobba.configure do |config|
        config.redis_options = Hippo.config.redis
        config.namespace = "#{controlling_ext.identifier}::jobba"
    end

    Resque.redis.namespace = "#{controlling_ext.identifier}::resque"
    Resque.redis = Hippo.config.redis
    Hippo::Concerns::AssetUploader.storages = {
        cache: Shrine::Storage::FileSystem.new(
            controlling_ext.root_path,
            prefix: "tmp/cache"
        ),
        store: Shrine::Storage::FileSystem.new(
            controlling_ext.root_path,
            prefix: "public/files"
        )
    }
    Hippo::Tenant.system.perform do
        Hippo::SystemSettings.for_ext('hippo').apply!
        Extensions.each{|ext| ext.apply_configuration }

        if Kernel.const_defined?(:Guard) && ::Guard.const_defined?(:Jest)
            ::Guard::Jest.logger = Hippo.logger
        end
    end
end
config_option( name, default, options={} ) click to toggle source

Since changing a config value inadvertently can have pretty drastic consequences that might not be discovered immediately, we log each time a value is changed

# File lib/hippo/configuration.rb, line 21
def self.config_option( name, default, options={} )
    define_method( "#{name}=" ) do | value |
        old_value = self.send( name )
        if value != old_value && !options[:silent]
            Hippo.logger.info "Config option #{name} changed from '#{old_value.inspect}' to '#{value.inspect}'"
        end
        instance_variable_set("@#{name}", value)
        if @observers.has_key?(name)
            @observers[name].each{ |cb| cb.call(value, old_value) }
        end
    end
    attr_reader_with_default(name, default)
end
new() click to toggle source
# File lib/hippo/configuration.rb, line 35
def initialize
    @observers=Hash.new{ |hash,key| hash[key] = Array.new }
    @secrets = Hashie::Mash.new
end

Public Instance Methods

get(config, &block) click to toggle source
# File lib/hippo/configuration.rb, line 44
def get(config, &block)
    value = self.send(config.to_sym)
    if block
        on_change(config,&block)
        block.call( value, value )
    end
    value
end
on_change(config, &block) click to toggle source
# File lib/hippo/configuration.rb, line 40
def on_change(config, &block)
    @observers[config.to_sym] << block
end