Sha256: 6470f7602917804d50fbe45e89efc17700bb4aea6529f2bb87dbc2add8ab868b

Contents?: true

Size: 1.47 KB

Versions: 3

Compression:

Stored size: 1.47 KB

Contents

require 'data_seeder'

class AppErrorDataSeeder
  include ::DataSeeder::Loader

  def setup
    @app = App.find_or_initialize_by(name: self.path_minus_ext)
    @existing_errors = {}
    if @app.new_record?
      logger.debug { "Loading errors for new App: #{@app.name}" }
      @app.save!
    else
      logger.debug { "Loading errors for existing App: #{@app.name}" }
      @app.app_errors.each do |app_error|
        @existing_errors[app_error.code] = app_error
      end
    end
  end

  def teardown
    unless @existing_errors.empty?
      logger.debug { "The following are begin removed:" }
      log_indent do
        @existing_errors.each do |code, app_error|
          logger.debug { "#{code}: #{app_error.message}" }
          app_error.destroy
        end
      end
    end
  end

  def load(io)
    io.each_line do |line|
      line.strip!
      next if line.blank? || line[0] == ?#
      space_i   = line.index(' ')
      raise "Invalid line: #{line}" unless space_i
      code      = line[0,space_i].strip
      message   = line[space_i+1..-1].strip
      app_error = @existing_errors[code]
      if app_error
        @existing_errors.delete(code)
        app_error.message = message
        unless app_error.changes.empty?
          logger.debug { "Changing #{code}: #{app_error.changes}" }
          app_error.save!
        end
      else
        logger.debug { "Creating #{code}: #{message}" }
        @app.app_errors.create!(code: code, message: message)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
data_seeder-1.0.2 test/dummy/app/models/app_error_data_seeder.rb
data_seeder-1.0.1 test/dummy/app/models/app_error_data_seeder.rb
data_seeder-1.0.0 test/dummy/app/models/app_error_data_seeder.rb