Class: Joyent::Cloud::Pricing::Configuration
- Inherits:
-
Object
- Object
- Joyent::Cloud::Pricing::Configuration
show all
- Includes:
- Helpers
- Defined in:
- lib/pricing/configuration.rb
Constant Summary
collapse
- @@lock =
Mutex.new
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Helpers
#currency_format, #monthly_from_hourly
Constructor Details
Returns a new instance of Configuration.
39
40
41
|
# File 'lib/pricing/configuration.rb', line 39
def initialize(hash = {})
@config = hash.symbolize_keys
end
|
Instance Attribute Details
#config ⇒ Object
map of image names to prices
37
38
39
|
# File 'lib/pricing/configuration.rb', line 37
def config
@config
end
|
Class Method Details
.from_url(url = JOYENT_URL) ⇒ Object
22
23
24
|
# File 'lib/pricing/configuration.rb', line 22
def from_url(url = JOYENT_URL)
set_instance(new(Joyent::Cloud::Pricing::Scraper.new.scrape(url)))
end
|
.from_yaml(filename = PRICING_FILENAME) ⇒ Object
15
16
17
18
19
20
|
# File 'lib/pricing/configuration.rb', line 15
def from_yaml(filename = PRICING_FILENAME)
legacy_prices = YAML.load(File.read(LEGACY_FILENAME)) rescue nil
legacy_prices ||= {}
current_prices = YAML.load(File.read(filename))[:pricing]
set_instance(new(current_prices.merge(legacy_prices)))
end
|
.instance(reload = false) ⇒ Object
10
11
12
13
|
# File 'lib/pricing/configuration.rb', line 10
def instance(reload = false)
@last_instance = from_yaml if reload || @last_instance.nil?
@last_instance
end
|
Instance Method Details
#cost(flavor) ⇒ Object
43
44
45
46
|
# File 'lib/pricing/configuration.rb', line 43
def cost(flavor)
f = config[flavor.to_sym]
f.nil? ? nil : f[:cost]
end
|
#flavor(flavor) ⇒ Object
48
49
50
51
52
53
|
# File 'lib/pricing/configuration.rb', line 48
def flavor(flavor)
f = config[flavor.to_sym]
return nil if f.nil?
f.delete(:name)
Flavor.new(flavor, f)
end
|
#merge(additional_pricing) ⇒ Object
67
68
69
|
# File 'lib/pricing/configuration.rb', line 67
def merge(additional_pricing)
config.merge!(additional_pricing)
end
|
#monthly(flavor) ⇒ Object
55
56
57
58
|
# File 'lib/pricing/configuration.rb', line 55
def monthly(flavor)
f = self.cost(flavor)
f.nil? ? 0 : monthly_from_hourly(f)
end
|
#save_yaml(filename = PRICING_FILENAME) ⇒ Object
60
61
62
63
64
65
|
# File 'lib/pricing/configuration.rb', line 60
def save_yaml(filename = PRICING_FILENAME)
File.open(filename, 'w') do |f|
YAML.dump({:date => Time.now.to_s,
:pricing => config, }, f)
end
end
|