diff options
author | Gabriel Mazetto <gabriel@gitlab.com> | 2016-05-31 00:13:42 +0300 |
---|---|---|
committer | Gabriel Mazetto <gabriel@gitlab.com> | 2016-08-04 19:55:37 +0300 |
commit | 926cee002d701548b5344e0b93e95beb3802fd54 (patch) | |
tree | 41530bd8f003cca902724a48f8a3b10eb2a91303 /lib/gitlab/mail_room.rb | |
parent | 96abb19206c6910c8c25f1db77c663baff023d35 (diff) |
Deduplicated resque.yml loading from several places
We will trust redis configuration params loading to Gitlab::RedisConfig.
Diffstat (limited to 'lib/gitlab/mail_room.rb')
-rw-r--r-- | lib/gitlab/mail_room.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/gitlab/mail_room.rb b/lib/gitlab/mail_room.rb new file mode 100644 index 00000000000..745cc79a10e --- /dev/null +++ b/lib/gitlab/mail_room.rb @@ -0,0 +1,44 @@ +require 'yaml' +require 'json' +require_relative 'lib/gitlab/redis' unless defined?(Gitlab::Redis) + +module Gitlab + module MailRoom + + class << self + + def enabled? + config[:enabled] && config[:address] + end + + def config + @config ||= fetch_config + end + + private + + def fetch_config + return nil unless File.exists?(config_file) + + rails_env = ENV['RAILS_ENV'] || ENV['RACK_ENV'] || 'development' + all_config = YAML.load_file(config_file)[rails_env].deep_symbolize_keys + + config = all_config[:incoming_email] || {} + config[:enabled] = false if config[:enabled].nil? + config[:port] = 143 if config[:port].nil? + config[:ssl] = false if config[:ssl].nil? + config[:start_tls] = false if config[:start_tls].nil? + config[:mailbox] = 'inbox' if config[:mailbox].nil? + + if config[:enabled] && config[:address] + config[:redis_url] = Gitlab::Redis.new(rails_env).url + end + end + + def config_file + file = ENV['MAIL_ROOM_GITLAB_CONFIG_FILE'] || 'config/gitlab.yml' + File.expand_path("../../../#{file}", __FILE__) + end + end + end +end |