Sha256: a8157449465490b0ddd6d9b240640c8e914bd0837b0515053e85db035e4252d4

Contents?: true

Size: 1.96 KB

Versions: 5

Compression:

Stored size: 1.96 KB

Contents

module NamedSeeds
  class Railtie < Rails::Railtie
    
    config.named_seeds = ActiveSupport::OrderedOptions.new
    config.named_seeds.app_load_seed          = false
    config.named_seeds.engines_with_load_seed = []
    
    config.named_seeds.db_cleaner = ActiveSupport::OrderedOptions.new
    config.named_seeds.db_cleaner.orm           = :active_record
    config.named_seeds.db_cleaner.connection    = :test
    config.named_seeds.db_cleaner.strategy      = :truncation
    config.named_seeds.db_cleaner.strategy_args = {}

    config.before_initialize do |app|
      Rails.application.paths.add 'db/test/seeds', :with => 'db/test/seeds.rb'
    end

    rake_tasks do
      load "named_seeds/railties/databases.rake"
    end
    
    def load_seed
      if seed_file
        setup_test_environment
        clean_test_database
        load_all_seeds
      end
    end
    
    
    protected
    
    def setup_test_environment
      unless Rails.env.test?
        ActiveRecord::Base.clear_all_connections!
        ActiveRecord::Base.configurations.clear
        silence_warnings { Object.const_set :RAILS_ENV, 'test' ; ENV['RAILS_ENV'] = 'test' ; Rails.instance_variable_set :@_env, nil }
        ActiveRecord::Base.configurations = Rails.configuration.database_configuration
        ActiveRecord::Base.establish_connection
      end
    end
    
    def clean_test_database
      require 'database_cleaner'
      DatabaseCleaner.logger = Rails.logger
      cleaner_opts = config.named_seeds.db_cleaner
      cleaner = DatabaseCleaner[cleaner_opts.orm, {:connection => cleaner_opts.connection}]
      cleaner.clean_with cleaner_opts.strategy, cleaner_opts.strategy_args
    end
    
    def load_all_seeds
      Rails.application.load_seed if config.named_seeds.app_load_seed
      config.named_seeds.engines_with_load_seed.each { |engine| engine.load_seed }
      load seed_file
    end
    
    def seed_file
      Rails.application.paths["db/test/seeds"].existent.first
    end
    
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
named_seeds-1.0.5 lib/named_seeds/railtie.rb
named_seeds-1.0.4 lib/named_seeds/railtie.rb
named_seeds-1.0.3 lib/named_seeds/railtie.rb
named_seeds-1.0.2 lib/named_seeds/railtie.rb
named_seeds-1.0.1 lib/named_seeds/railtie.rb