Class: Castronaut::Configuration

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

Constant Summary collapse

DefaultConfigFilePath =
'./castronaut.yml'

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#config_file_pathObject

Returns the value of attribute config_file_path.



16
17
18
# File 'lib/castronaut/configuration.rb', line 16

def config_file_path
  @config_file_path
end

#config_hashObject

Returns the value of attribute config_hash.



16
17
18
# File 'lib/castronaut/configuration.rb', line 16

def config_hash
  @config_hash
end

#loggerObject

Returns the value of attribute logger.



16
17
18
# File 'lib/castronaut/configuration.rb', line 16

def logger
  @logger
end

Class Method Details

.load(config_file_path = Castronaut::Configuration::DefaultConfigFilePath) ⇒ Object



18
19
20
21
22
23
24
25
26
27
# File 'lib/castronaut/configuration.rb', line 18

def self.load(config_file_path = Castronaut::Configuration::DefaultConfigFilePath)
  config = Castronaut::Configuration.new
  config.config_file_path = config_file_path
  config.config_hash = parse_yaml_config(config_file_path)
  config.parse_config_into_settings(config.config_hash)
  config.logger = config.setup_logger
  config.debug_initialize if config.logger.debug?
  config.connect_activerecord 
  config
end

.parse_yaml_config(file_path) ⇒ Object



29
30
31
# File 'lib/castronaut/configuration.rb', line 29

def self.parse_yaml_config(file_path)
  YAML::load_file(file_path)
end

Instance Method Details

#can_fire_callbacks?Boolean

Returns:

  • (Boolean)


65
66
67
# File 'lib/castronaut/configuration.rb', line 65

def can_fire_callbacks?
  config_hash.keys.include?('callbacks') && !config_hash['callbacks'].nil?
end

#connect_activerecordObject



69
70
71
72
73
74
75
76
77
# File 'lib/castronaut/configuration.rb', line 69

def connect_activerecord
  create_directory('db')

  ActiveRecord::Base.logger = logger
  ActiveRecord::Base.colorize_logging = false

  connect_cas_to_activerecord
  connect_adapter_to_activerecord if cas_adapter.has_key?('database')
end

#connect_adapter_to_activerecordObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/castronaut/configuration.rb', line 89

def connect_adapter_to_activerecord
  logger.info "#{self.class} - Connecting to cas adapter database using #{cas_adapter['database'].inspect}"
  if cas_adapter['adapter'] == "database"
    Castronaut::Adapters::RestfulAuthentication::User.establish_connection(cas_adapter['database'])
    Castronaut::Adapters::RestfulAuthentication::User.logger = logger
  elsif cas_adapter['adapter'] == "development"
    Castronaut::Adapters::Development::User.establish_connection(cas_adapter['database'])
    Castronaut::Adapters::Development::User.logger = logger
  end

  unless ENV["test"] == "true"
    if Castronaut::Adapters::RestfulAuthentication::User.connection.tables.empty?
      STDERR.puts "#{self.class} - There are no tables in the given database.\nConfig details:\n#{config_hash.inspect}"
      Kernel.exit(0)
    end
  end
end

#connect_cas_to_activerecordObject



79
80
81
82
83
84
85
86
87
# File 'lib/castronaut/configuration.rb', line 79

def connect_cas_to_activerecord
  logger.info "#{self.class} - Connecting to cas database using #{cas_database.inspect}"
  ActiveRecord::Base.establish_connection(cas_database)

  migration_path = File.expand_path(File.join(File.dirname(__FILE__), 'db'))

  logger.debug "#{self.class} - Migrating to the latest version using migrations in #{migration_path}"
  ActiveRecord::Migrator.migrate(migration_path, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
end

#create_directory(dir) ⇒ Object



46
47
48
# File 'lib/castronaut/configuration.rb', line 46

def create_directory(dir)
  FileUtils.mkdir_p(dir) unless File.exist?(dir)
end

#debug_initializeObject



57
58
59
60
61
62
63
# File 'lib/castronaut/configuration.rb', line 57

def debug_initialize
  logger.debug "#{self.class} - initializing with parameters"
  config_hash.each_pair do |key, value|
    logger.debug "--> #{key} = #{value.inspect}"
  end
  logger.debug "#{self.class} - initialization complete"
end

#parse_config_into_settings(config) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/castronaut/configuration.rb', line 33

def parse_config_into_settings(config)
  mod = Module.new do
    config.each_pair do |k,v|
      if self.methods.include?(k.to_s)
        STDERR.puts "#{self.class} - Configuration tried to define #{k}, which was already defined." unless ENV["test"] == "true"
        next
      end
      define_method(k) { v }
    end
  end
  self.extend mod
end

#setup_loggerObject



50
51
52
53
54
55
# File 'lib/castronaut/configuration.rb', line 50

def setup_logger
  create_directory(log_directory)
  log = Hodel3000CompliantLogger.new("#{log_directory}/castronaut.log", "daily")
  log.level = eval(log_level)
  log
end