Class: Twitterscrobble::Preferences
- Inherits:
-
Object
- Object
- Twitterscrobble::Preferences
- Defined in:
- lib/twitterscrobble/preferences.rb
Constant Summary collapse
- PREFERENCES_FILE_NAME =
"preferences.yaml"
- APP_NAME =
"twitterscrobble"
- TO_BE_SAVED =
[:history, :twitter_user, :scrobbler_user, :twitter_password]
Instance Attribute Summary collapse
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
Instance Method Summary collapse
- #history=(history_stamp) ⇒ Object
-
#initialize ⇒ Preferences
constructor
A new instance of Preferences.
-
#method_missing(methodname, *args) ⇒ Object
delegates reading of attributes to @cfg.
- #save ⇒ Object
Constructor Details
#initialize ⇒ Preferences
Returns a new instance of Preferences.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/twitterscrobble/preferences.rb', line 21 def initialize parsed_args = parse_args begin if !parsed_args[:stateless] @cfg = YAML.load(File.open(full_prefs_file_path)) else @cfg = {} end rescue @cfg = {} end @cfg.merge!(parsed_args) # args override cfg if @cfg[:logfile] @logger = SimpleLogger.new(@cfg[:logfile]) else @logger = SimpleLogger.new(STDOUT) end if @cfg[:loglevel] @logger.level = @cfg[:loglevel] else @logger.level = Logger::WARN end @logger.debug("Command line preferences: #{parsed_args.reject{|k,v| k == :twitter_password}.inspect}") @logger.debug("Effective preferences after merging in preferences file #{full_prefs_file_path}:") @logger.debug(@cfg.reject{|k,v| k == :twitter_password}.inspect) if 0 < check_required_args.size msg = "" msg << "Required argument#{'s' if 1 < check_required_args.size} #{check_required_args.join(', ')} " msg << "not found in preferences or command line parameters." raise msg end end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(methodname, *args) ⇒ Object
delegates reading of attributes to @cfg
75 76 77 |
# File 'lib/twitterscrobble/preferences.rb', line 75 def method_missing(methodname, *args) @cfg[methodname] end |
Instance Attribute Details
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
19 20 21 |
# File 'lib/twitterscrobble/preferences.rb', line 19 def logger @logger end |
Instance Method Details
#history=(history_stamp) ⇒ Object
79 80 81 |
# File 'lib/twitterscrobble/preferences.rb', line 79 def history=(history_stamp) @cfg[:history] = history_stamp end |
#save ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/twitterscrobble/preferences.rb', line 60 def save unless @cfg[:no_save] Dir.mkdir(preferences_dir) if !File.exist?(preferences_dir) File.open(full_prefs_file_path, 'w') do |out| save_cfg = @cfg.reject{|k, v| !TO_BE_SAVED.include?(k)} @logger.debug("Writing preferences: #{save_cfg.reject{|k,v| k == :twitter_password}.inspect}") YAML.dump(save_cfg, out) end File.new(full_prefs_file_path).chmod(0600) end end |