class TransmissionRSS::Config
Class handles configuration parameters.
Public Class Methods
new(file = nil)
click to toggle source
# File lib/transmission-rss/config.rb, line 23 def initialize(file = nil) self.merge_defaults! self.load(file) unless file.nil? @log = Log.instance end
Public Instance Methods
load(config, watch: true)
click to toggle source
Merges a Hash
or YAML file (containing a Hash
) with itself.
# File lib/transmission-rss/config.rb, line 31 def load(config, watch: true) case config.class.to_s when 'Hash' self.merge!(config) when 'String' self.merge_yaml!(config, watch) else raise ArgumentError.new('Could not load config.') end check_deprecated check_warnings self end
merge_defaults!()
click to toggle source
# File lib/transmission-rss/config.rb, line 47 def merge_defaults! self.merge!({ 'feeds' => [], 'update_interval' => 600, 'add_paused' => false, 'server' => { 'host' => 'localhost', 'port' => 9091, 'tls' => false, 'rpc_path' => '/transmission/rpc' }, 'login' => nil, 'log' => { 'target' => $stderr, 'level' => :debug }, 'fork' => false, 'single' => false, 'pid_file' => false, 'privileges' => {}, 'seen_file' => nil }) end
merge_yaml!(path, watch = true)
click to toggle source
reset!()
click to toggle source
# File lib/transmission-rss/config.rb, line 80 def reset! self.clear self.merge_defaults! end
watch_file(path)
click to toggle source
# File lib/transmission-rss/config.rb, line 85 def watch_file(path) path = Pathname.new(path).realpath.to_s @notifier ||= INotify::Notifier.new @notifier.watch(path, :close_write) do |e| self.reset! self.merge_yaml!(path, false) @log.debug('reloaded config file ' + path) @log.debug(self) on_change end @notifier_thread ||= Thread.start do @notifier.run end end
Private Instance Methods
check_deprecated()
click to toggle source
# File lib/transmission-rss/config.rb, line 106 def check_deprecated warnings = false DEPRECATED.each do |key, value| if self[key.to_s] @log.warn('[DEPRECATED] option %s, use %s' % [key, value]) warnings = true end end warnings end
check_warnings()
click to toggle source
# File lib/transmission-rss/config.rb, line 119 def check_warnings return false unless self['feeds'] warnings = false urls = self['feeds'].map { |feed| feed['url'] } urls.duplicates.each do |duplicate| @log.warn('Duplicate URL definition: %s' % duplicate) warnings = true end warnings end