class BrRailties::Ibge::Import::Municipalities

Constants

SOURCE_URL

Public Class Methods

new() click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 11
def initialize
  run
end

Private Instance Methods

find_federal_unit(raw) click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 35
def find_federal_unit(raw)
  raw = raw['microrregiao']['mesorregiao']['UF']
  ::BrRailties::FederalUnit.find_by(ibge_code: raw['id']) ||
    ::BrRailties::FederalUnit.find_by(acronym: raw['sigla']) ||
    raise("Federal unit not found (Raw data: #{raw})")
end
import(raw) click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 27
def import(raw)
  data = { federal_unit: find_federal_unit(raw), name: raw['nome'], ibge_code: raw['id'] }
  record = record_by_data(data)
  record.attributes = data
  ::Rails.logger.info("Importing: #{record.attributes}")
  record.save!
end
record_by_data(data) click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 42
def record_by_data(data)
  ::BrRailties::Municipality.find_by(ibge_code: data[:ibge_code]) ||
    ::BrRailties::Municipality.find_by(name: data[:name],
                                       federal_unit: data[:federal_unit]) ||
    ::BrRailties::Municipality.new
end
run() click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 17
def run
  source_data.each do |municipality_source_data|
    import(municipality_source_data)
  end
end
source_data() click to toggle source
# File lib/br_railties/ibge/import/municipalities.rb, line 23
def source_data
  JSON.parse(Net::HTTP.get(URI.parse(SOURCE_URL)))
end