class RangeGenerator
Attributes
fetch_days[R]
from_date_str[R]
profile_time_zone[R]
Public Class Methods
new(from_date_str, fetch_days, profile_time_zone)
click to toggle source
# File lib/range_generator.rb, line 6 def initialize(from_date_str, fetch_days, profile_time_zone) @from_date_str = from_date_str @fetch_days = fetch_days @profile_time_zone = profile_time_zone end
Public Instance Methods
generate_range()
click to toggle source
# File lib/range_generator.rb, line 12 def generate_range validate show_warnings range_only_present.map{|date| date.to_s} end
Private Instance Methods
from_date()
click to toggle source
# File lib/range_generator.rb, line 20 def from_date Date.parse(from_date_str) end
from_date_too_early?()
click to toggle source
# File lib/range_generator.rb, line 71 def from_date_too_early? from_date > today end
overdays()
click to toggle source
# File lib/range_generator.rb, line 67 def overdays range.to_a - range_only_present.to_a end
overdays?()
click to toggle source
# File lib/range_generator.rb, line 63 def overdays? ! overdays.empty? end
range()
click to toggle source
# File lib/range_generator.rb, line 47 def range if from_date_too_early? return [] end if fetch_days from_date..(from_date + fetch_days - 1) else from_date..today end end
range_only_present()
click to toggle source
# File lib/range_generator.rb, line 59 def range_only_present range.find_all{|date| date <= today} end
show_warnings()
click to toggle source
# File lib/range_generator.rb, line 37 def show_warnings if from_date_too_early? Embulk.logger.warn "Mixpanel allow 2 days before to from_date, so no data is input." end if overdays? Embulk.logger.warn "These dates are too early access, ignored them: from #{overdays.first} to #{overdays.last}" end end
today()
click to toggle source
# File lib/range_generator.rb, line 75 def today zone = ActiveSupport::TimeZone[@profile_time_zone] Embulk.logger.warn "Coudn't find timezone support for #{@profile_time_zone}" if zone.nil? @today ||= (zone.nil? ? Date.today : zone.today) end
validate()
click to toggle source
# File lib/range_generator.rb, line 24 def validate begin from_date rescue ArgumentError # invalid date raise Embulk::ConfigError.new "from_date '#{from_date_str}' is invalid date" end if fetch_days && fetch_days < 1 # `days` only allowed nil or positive number raise Embulk::ConfigError.new "fetch_days '#{fetch_days}' is invalid. Please specify bigger number than 0." end end