class Sprig::Reap::SeedFile

Constants

DEFAULT_NAMESPACE

Attributes

model[R]

Public Class Methods

new(model) click to toggle source
# File lib/sprig/reap/seed_file.rb, line 9
def initialize(model)
  raise ArgumentError, 'Must initialize with a Sprig::Reap::Model' unless model.is_a? Model

  @model = model
end

Public Instance Methods

exists?() click to toggle source
# File lib/sprig/reap/seed_file.rb, line 19
def exists?
  File.exists?(path)
end
path() click to toggle source
# File lib/sprig/reap/seed_file.rb, line 15
def path
  Rails.root.join('db', 'seeds', Sprig::Reap.target_env, "#{model.to_s.tableize.gsub('/', '_')}.yml")
end
write() click to toggle source
# File lib/sprig/reap/seed_file.rb, line 23
def write
  initialize_file do |file, namespace|
    file.write model.to_yaml(:namespace => namespace)
    log_info "Successfully reaped records for #{model}...\r"
  end
end

Private Instance Methods

existing_sprig_ids(yaml) click to toggle source
# File lib/sprig/reap/seed_file.rb, line 52
def existing_sprig_ids(yaml)
  return if yaml.empty?

  YAML.load(yaml).fetch(DEFAULT_NAMESPACE).to_a.map do |record|
    record.fetch('sprig_id')
  end
end
initialize_file() { |file, namespace| ... } click to toggle source
# File lib/sprig/reap/seed_file.rb, line 32
def initialize_file
  existing_file = exists?
  access_type = existing_file ? 'a+' : 'w'

  File.open(path, access_type) do |file|
    namespace = DEFAULT_NAMESPACE

    if existing_file
      model.existing_sprig_ids = existing_sprig_ids(file.read)
      namespace = nil
      file.write("\n")
    end

    yield file, namespace
  end

rescue => e
  log_error "There was an issue writing to the file for #{model}:\r#{e.message}"
end