-
Notifications
You must be signed in to change notification settings - Fork 1
Configuration
In order to connect to your database DbSchema needs to be properly configured with connection settings. You can do that with DbSchema.configure:
DbSchema.configure(
adapter: 'postgres',
host: 'localhost',
port: 5432,
database: 'my_db',
user: '7even',
password: 'secret'
)If you have a Postgres URL you can pass it under the :url option:
DbSchema.configure(url: 'postgres://7even:secret@localhost:5432/my_db')You can mix both approaches by overriding some parts of the connection string (:url has the lowest priority):
DbSchema.configure(
url: ENV['DATABASE_URL'],
database: 'my_database'
)Subsequent DbSchema.configure calls will override only the options you pass into them.
DbSchema also has several options not related to database connection parameters:
-
log_changes- log the operations actually performed on a database (trueby default) -
dry_run- show the operations that will be applied to the database, then roll everything back (falseby default) -
post_check- make sure the schema was applied correctly (trueby default)
Dry run may be useful while you are building your schema definition for an existing app; adjust your schema.rb and apply it in dry run mode until it fits your database and next dry run doesn't report any changes.
DbSchema.configure(
url: ENV['DATABASE_URL'],
dry_run: true
)Don't forget to turn dry_run off afterwards!
If your application uses Sequel you can inject your database connection into DbSchema to keep it from establishing it's own connection:
db_conn = Sequel.connect(adapter: 'postgres', database: 'some_database')
DbSchema.connection = db_conn
# then use db_conn in your applicationRails users can use the DbSchema.configure_from_yaml method passing it the database.yml file path
along with the current environment (and other options if needed):
DbSchema.configure_from_yaml(Rails.root.join('config', 'database.yml'), Rails.env)Hanami users can just pass the database url to DbSchema:
DbSchema.configure(url: ENV['DATABASE_URL'])