forked from fixin.me/fixin.me
Adds `bundle exec rails test:all_databases` which runs the full test suite against every test database configured in database.yml in a single command. Convention: any top-level key starting with "test" that contains a Hash is a test database. `test:` is the required primary; `test_<name>:` blocks are optional additional adapters (e.g. test_sqlite, test_pg). For each configured database the task: 1. Checks the required adapter gem is available (skips with warning if not) 2. Runs `rails db:test:prepare` to create and migrate the database 3. Runs `rails test` and records pass/fail 4. Prints a summary and exits non-zero if any database failed Mechanism: a RAILS_DATABASE_YML env var points each subprocess to a temporary database.yml that contains only the current test config. config/application.rb(.dist) reads this var and overrides Rails' database config path before initialisation, so no monkey-patching of the test runner is required. config/database.yml.dist is updated with documented examples for SQLite and PostgreSQL additional test databases. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
63 lines
2.5 KiB
Plaintext
63 lines
2.5 KiB
Plaintext
require_relative "boot"
|
|
|
|
require "rails"
|
|
# Pick the frameworks you want:
|
|
require "active_model/railtie"
|
|
# require "active_job/railtie"
|
|
require "active_record/railtie"
|
|
# require "active_storage/engine"
|
|
require "action_controller/railtie"
|
|
require "action_mailer/railtie"
|
|
# require "action_mailbox/engine"
|
|
# require "action_text/engine"
|
|
require "action_view/railtie"
|
|
# require "action_cable/engine"
|
|
require "rails/test_unit/railtie"
|
|
|
|
# Require the gems listed in Gemfile, including any gems
|
|
# you've limited to :test, :development, or :production.
|
|
Bundler.require(*Rails.groups)
|
|
|
|
module FixinMe
|
|
class Application < Rails::Application
|
|
# Allow RAILS_DATABASE_YML to override the database config file path.
|
|
# Used by `rails test:all_databases` to test against multiple DB adapters.
|
|
config.paths['config/database'] = [ENV['RAILS_DATABASE_YML']] if ENV['RAILS_DATABASE_YML']
|
|
|
|
# Initialize configuration defaults for originally generated Rails version.
|
|
config.load_defaults 7.0
|
|
|
|
# Autoload lib/, required e.g. for core library extensions.
|
|
# https://guides.rubyonrails.org/autoloading_and_reloading_constants.html#config-autoload-lib-ignore.
|
|
config.autoload_lib(ignore: %w(assets tasks))
|
|
|
|
# Configuration for the application, engines, and railties goes here.
|
|
#
|
|
# These settings can be overridden in specific environments using the files
|
|
# in config/environments, which are processed later.
|
|
#
|
|
# config.time_zone = "Central Time (US & Canada)"
|
|
# config.eager_load_paths << Rails.root.join("extras")
|
|
|
|
config.action_dispatch.rescue_responses['ApplicationController::AccessForbidden'] = :forbidden
|
|
config.action_dispatch.rescue_responses['ApplicationController::ParameterInvalid'] = :unprocessable_entity
|
|
|
|
# SETUP: Below settings need to be updated on a per-installation basis.
|
|
#
|
|
# URL to use in sent e-mails.
|
|
config.action_mailer.default_url_options = {host: 'localhost', :protocol => 'https'}
|
|
# https://guides.rubyonrails.org/configuring.html#config-action-mailer-delivery-method
|
|
config.action_mailer.delivery_method = :sendmail
|
|
|
|
# List of hosts this app is available at.
|
|
# https://guides.rubyonrails.org/configuring.html#actiondispatch-hostauthorization
|
|
config.hosts += ['localhost', 'example.com', IPAddr.new('1.2.3.4/32')]
|
|
|
|
# Email address of admin account
|
|
config.admin = 'admin@localhost'
|
|
|
|
# Sender address of account registration-related messages
|
|
Devise.mailer_sender = 'noreply@localhost'
|
|
end
|
|
end
|