Sha256: e0c3db7e23344ac85d7f102e5a4b6a65bf9eb939b02a284cfa7c459827829d65

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

require "simple_fixture/version"
require "active_record"
require "active_record/fixtures"

class SimpleFixture

  DB_DIR = 'tmp'
  DB_NAME = 'simple_fixture'
  CONFIG_DIR = File.join('test', 'simple_fixture')
  FIXTURES_DIR = File.join(CONFIG_DIR, 'fixtures')
  MIGRATION_FILE = File.join(CONFIG_DIR, 'migration.rb')
  MODELS_FILE = File.join(CONFIG_DIR, 'models.rb')

  class << self
    def migrate(&block)
      Class.new(ActiveRecord::Migration::Current) do
        define_method :change do
          instance_eval &block
        end
      end.new.change
    end
  end

  def initialize
    build_db_file
    establish_connection

    ActiveRecord::Base.logger = Logger.new(STDOUT)
    load MIGRATION_FILE
    load MODELS_FILE
    ActiveRecord::FixtureSet.create_fixtures(FIXTURES_DIR, ymls)
  end

  private

  def ymls
    Dir[File.join(FIXTURES_DIR, '*.yml')].map{ |f| File.basename(f, '.*') }
  end

  def build_db_file
    Dir.mkdir DB_DIR unless Dir.exists? DB_DIR
    path = File.join(DB_DIR, "#{DB_NAME}.splite3")
    File.delete(path) if File.exists? path
    @path = path
  end

  def establish_connection
    ::ActiveRecord::Base.configurations = {test: {adapter: 'sqlite3', database: @path}}.with_indifferent_access
    ::ActiveRecord::Base.establish_connection(:test)
  rescue => _
    ::ActiveRecord::Base.establish_connection('test')
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
simple_fixture-0.1.1 lib/simple_fixture.rb