Module: Smailr

Defined in:
lib/smailr.rb,
lib/smailr/cli.rb,
lib/smailr/dkim.rb,
lib/smailr/alias.rb,
lib/smailr/model.rb,
lib/smailr/setup.rb,
lib/smailr/domain.rb,
lib/smailr/mailbox.rb,
lib/smailr/version.rb

Defined Under Namespace

Modules: Model Classes: Alias, Cli, ConfigurationError, Dkim, Domain, Mailbox, MissingDomain, Setup

Constant Summary collapse

VERSION =
'0.8.2'

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.bundled_config_fileObject

Returns the value of attribute bundled_config_file.



30
31
32
# File 'lib/smailr.rb', line 30

def bundled_config_file
  @bundled_config_file
end

.configObject

Returns the value of attribute config.



26
27
28
# File 'lib/smailr.rb', line 26

def config
  @config
end

.config_filesObject

Returns the value of attribute config_files.



27
28
29
# File 'lib/smailr.rb', line 27

def config_files
  @config_files
end

.contrib_directoryObject

Returns the value of attribute contrib_directory.



28
29
30
# File 'lib/smailr.rb', line 28

def contrib_directory
  @contrib_directory
end

.migrations_directoryObject

Returns the value of attribute migrations_directory.



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

def migrations_directory
  @migrations_directory
end

Class Method Details

.db_connectObject



58
59
60
61
62
63
64
65
66
# File 'lib/smailr.rb', line 58

def self.db_connect
  unless self.config && self.config['database']
    raise ConfigurationError, "Configuration file is missing database settings."
  end

  Sequel.connect(self.config['database'])
rescue Sequel::DatabaseConnectionError => e
  raise ConfigurationError, "Cannot open database connection: #{e.message}"
end

.initialize!Object



68
69
70
71
72
73
74
75
76
77
78
# File 'lib/smailr.rb', line 68

def self.initialize!
  load_config

  unless defined?(Smailr::Model)
    require 'smailr/model'
  end

  Smailr.send(:remove_const, :DB) if Smailr.const_defined?(:DB, false)
  Smailr.const_set(:DB, db_connect)
  Smailr::DB.sql_log_level = :debug
end

.load_configObject



33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/smailr.rb', line 33

def self.load_config
  config = {}
  runtime_config_files = config_files.reject { |f| f == bundled_config_file }
  readable_runtime_config_files = runtime_config_files.select { |f| File.file?(f) && File.readable?(f) }
  unreadable_runtime_config_files = runtime_config_files.select { |f| File.exist?(f) && !File.readable?(f) }

  if readable_runtime_config_files.empty?
    if unreadable_runtime_config_files.any?
      raise ConfigurationError, "Cannot read configuration file: #{unreadable_runtime_config_files.join(', ')}"
    end

    raise ConfigurationError, "Cannot find configuration file. Checked: #{runtime_config_files.join(', ')}"
  end

  if bundled_config_file && File.readable?(bundled_config_file)
    config.merge!(YAML.load_file(bundled_config_file) || {})
  end

  readable_runtime_config_files.each do |f|
    config.merge!(YAML.load_file(f) || {})
  end

  self.config = config
end

.loggerObject



80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/smailr.rb', line 80

def self.logger
  unless @logger
    @logger = Logger.new(STDOUT)
    @logger.level = Logger::Severity::DEBUG
    @logger.formatter = proc do |severity, datetime, progname, msg|
      if severity == "ERROR"
          "ERROR: #{msg}\n"
      else
          "#{msg}\n"
      end
    end
  end
  @logger
end

.logger=(logger) ⇒ Object



95
96
97
# File 'lib/smailr.rb', line 95

def self.logger=(logger)
  @logger = logger
end