Class: Buff::Config::Ruby
Defined Under Namespace
Classes: Evaluator
Instance Attribute Summary
Attributes inherited from Base
Class Method Summary collapse
- .from_file(path) ⇒ Buff::Config::Ruby
- .from_ruby(contents, path = nil) ⇒ Buff::Config::Ruby
-
.platform_specific_path(path) ⇒ String
Converts a path to a path usable for your current platform.
Instance Method Summary collapse
- #from_ruby(contents, path = nil) ⇒ Buff::Config::Ruby
-
#initialize(path = nil, options = {}) ⇒ Ruby
constructor
A new instance of Ruby.
-
#reload ⇒ Buff::Config::Ruby
Reload the current configuration file from disk.
- #save(destination = self.path) ⇒ Object
-
#to_ruby ⇒ String
(also: #to_rb)
Convert the result to Ruby.
Methods inherited from Base
Constructor Details
#initialize(path = nil, options = {}) ⇒ Ruby
Returns a new instance of Ruby.
104 105 106 107 |
# File 'lib/buff/config/ruby.rb', line 104 def initialize(path = nil, = {}) super from_ruby(File.read(path), path) if path && File.exists?(path) end |
Class Method Details
.from_file(path) ⇒ Buff::Config::Ruby
67 68 69 70 71 72 73 |
# File 'lib/buff/config/ruby.rb', line 67 def from_file(path) path = File.(path) contents = File.read(path) new(path).from_ruby(contents, path) rescue TypeError, Errno::ENOENT, Errno::EISDIR raise Errors::ConfigNotFound, "No configuration found at: '#{path}'" end |
.from_ruby(contents, path = nil) ⇒ Buff::Config::Ruby
58 59 60 |
# File 'lib/buff/config/ruby.rb', line 58 def from_ruby(contents, path=nil) new.from_ruby(contents, path) end |
.platform_specific_path(path) ⇒ String
Converts a path to a path usable for your current platform
80 81 82 83 84 85 86 87 |
# File 'lib/buff/config/ruby.rb', line 80 def platform_specific_path(path) if RUBY_PLATFORM =~ /mswin|mingw|windows/ system_drive = ENV['SYSTEMDRIVE'] ? ENV['SYSTEMDRIVE'] : "" path = win_slashify File.join(system_drive, path.split('/')[2..-1]) end path end |
Instance Method Details
#from_ruby(contents, path = nil) ⇒ Buff::Config::Ruby
112 113 114 115 116 |
# File 'lib/buff/config/ruby.rb', line 112 def from_ruby(contents, path=nil) hash = Buff::Config::Ruby::Evaluator.parse(contents, path, self) mass_assign(hash) self end |
#reload ⇒ Buff::Config::Ruby
Reload the current configuration file from disk
149 150 151 152 |
# File 'lib/buff/config/ruby.rb', line 149 def reload mass_assign(self.class.from_file(path).to_hash) self end |
#save(destination = self.path) ⇒ Object
134 135 136 137 138 139 140 141 142 143 144 |
# File 'lib/buff/config/ruby.rb', line 134 def save(destination = self.path) if destination.nil? raise Errors::ConfigSaveError, "Cannot save configuration without a destination. " + "Provide one to save or set one on the object." end FileUtils.mkdir_p(File.dirname(destination)) File.open(destination, 'w+') do |f| f.write(to_ruby) end end |
#to_ruby ⇒ String Also known as: to_rb
Convert the result to Ruby.
121 122 123 124 125 126 127 128 129 130 131 |
# File 'lib/buff/config/ruby.rb', line 121 def to_ruby self.to_hash.map do |k,v| value = if const = find_constant(v) const else v.inspect end "#{k.to_s}(#{value})" end.join("\n") end |