Skip to content

Instantly share code, notes, and snippets.

@nmeylan
Last active August 29, 2015 14:14
Show Gist options
  • Save nmeylan/60aa53566d87d39ee6b0 to your computer and use it in GitHub Desktop.
Save nmeylan/60aa53566d87d39ee6b0 to your computer and use it in GitHub Desktop.
Set up a fast rails test environment

Use sqlite in memory db :

config/database.yml

  test:
    adapter: sqlite3
    database: ":memory:"

Setup Spring configuration to run with in memory db :

config/spring.rb

  if defined?(Spring)
    Spring.after_fork do
      load "#{Rails.root.to_s}/config/initializers/in_memory_db.rb"
    end
  end

Load schema on environment startup

config/initializers/in_memory_db.rb

  def in_memory_database?
  Rails.env == "test" and
      ActiveRecord::Base.connection.adapter_name.downcase.include?('sqlite') and
      Rails.configuration.database_configuration['test']['database'] == ':memory:'
  end

  if in_memory_database?
    require 'active_record/migration'
    ActiveRecord::Migration.verbose = false
    puts "creating sqlite in memory database"
    load "#{Rails.root}/db/schema.rb"
  end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment