class Meteorologist
Attributes
forecast_time[R]
location[R]
units[R]
Public Class Methods
new(location, options = {})
click to toggle source
# File lib/meteorologist.rb, line 4 def initialize(location, options = {}) validate_environment @location = location @forecaster_class = options.fetch(:forecaster) { ::Forecaster } @navigator_class = options.fetch(:navigator) { ::Navigator } @moon_info_class = options.fetch(:moon_info) { ::MoonInfo } @forecast_time = options.fetch(:forecast_time) { Time.now } @units = options.fetch(:units) { 'si' } # or 'us' for Imperial units end
Public Instance Methods
forecast()
click to toggle source
# File lib/meteorologist.rb, line 15 def forecast @forecast ||= @forecaster_class.new(coordinates, units, forecast_time) end
location_name()
click to toggle source
# File lib/meteorologist.rb, line 23 def location_name navigator.location_name end
moon()
click to toggle source
# File lib/meteorologist.rb, line 19 def moon @moon ||= @moon_info_class.new(forecast.moon_phase) end
Private Instance Methods
coordinates()
click to toggle source
# File lib/meteorologist.rb, line 30 def coordinates navigator.coordinates end
validate_environment()
click to toggle source
# File lib/meteorologist.rb, line 38 def validate_environment p "WARNING: You have not set a cache path" unless ENV['CACHE_PATH'] raise RuntimeError, "You must set a Darksky API secret" unless ENV['DARKSKYSECRET'] raise RuntimeError, "You must set a Google API secret" unless ENV['GOOGLEMAPSECRET'] end