class Focus::Config
Public Class Methods
method_missing(m, *args, &block)
click to toggle source
# File lib/focus/config.rb, line 8 def method_missing(m, *args, &block) # rubocop:disable MethodMissing config = new config.send(m, *args, &block) || env(m) || raise_undefined_config(m) end
new()
click to toggle source
Calls superclass method
# File lib/focus/config.rb, line 25 def initialize source_env super(configurations) ingest _hardcoded end
Private Class Methods
env(m)
click to toggle source
# File lib/focus/config.rb, line 15 def env(m) ENV[m.to_s.upcase] end
raise_undefined_config(m)
click to toggle source
# File lib/focus/config.rb, line 19 def raise_undefined_config(m) error = "(#{m}) neither `.focus.yml#config.#{m}` or `ENV['#{m.to_s.upcase}']` are defined" raise MissingConfiguration, error end
Private Instance Methods
_hardcoded()
click to toggle source
# File lib/focus/config.rb, line 56 def _hardcoded raise "`blink_port` was not defined" unless blink_port { "blink_server" => "http://localhost:#{blink_port}/blink1", "slack_available" => "auto", "slack_away" => "away" } end
configurations()
click to toggle source
# File lib/focus/config.rb, line 33 def configurations defaults.merge(custom_config) end
custom_config()
click to toggle source
# File lib/focus/config.rb, line 43 def custom_config @custom_config ||= Focus::ConfigLoader.load("config") end
defaults()
click to toggle source
# File lib/focus/config.rb, line 47 def defaults { "blink_port" => 8754, "focus_history_file" => "#{ENV['HOME']}/.focus_history", "focus_minutes" => 25, "slack_api_url" => "https://slack.com/api" } end
ingest(hsh)
click to toggle source
# File lib/focus/config.rb, line 37 def ingest(hsh) hsh.each do |key, value| send("#{key}=", value) end end
source_env()
click to toggle source
# File lib/focus/config.rb, line 66 def source_env return unless custom_config.respond_to? :keys relative_path = custom_config["env_file"] || ".env" path = File.expand_path relative_path return unless File.exist?(path) Dotenv.load path end