module
PgORM::Settings
Overview
Database connection settings and configuration.
Settings can be configured via environment variables or programmatically. The module uses the Habitat shard for configuration management.
Environment Variables
PG_HOST: Database host (default: "localhost")PG_PORT: Database port (default: 5432)PG_DBorPG_DATABASE: Database name (default: "test")PG_USER: Database user (default: "postgres")PG_PASSWORD: Database password (default: "")PG_QUERY: Additional query parameters (default: "")PG_LOCK_TIMEOUT: Advisory lock timeout in seconds (default: 5)
Programmatic Configuration
# Configure individual settings
PgORM::Database.configure do |settings|
settings.host = "db.example.com"
settings.port = 5432
settings.db = "production"
settings.user = "app_user"
settings.password = "secret"
end
# Or parse a connection URL
PgORM::Database.parse("postgres://user:pass@localhost:5432/mydb")
Included Modules
- Habitat::SettingsHelpers
- Habitat::TempConfig
Defined in:
pg-orm/settings.crConstant Summary
-
HABITAT_SETTINGS =
[{decl: host : String = ENV["PG_HOST"]? || "localhost", example: nil, validation: nil}, {decl: port : Int32 = (ENV["PG_PORT"]? || 5432).to_i, example: nil, validation: nil}, {decl: db : String = (ENV["PG_DB"]? || ENV["PG_DATABASE"]?) || "test", example: nil, validation: nil}, {decl: user : String = ENV["PG_USER"]? || "postgres", example: nil, validation: nil}, {decl: password : String = ENV["PG_PASSWORD"]? || "", example: nil, validation: nil}, {decl: query : String = ENV["PG_QUERY"]? || "", example: nil, validation: nil}, {decl: lock_timeout : Time::Span = (ENV["PG_LOCK_TIMEOUT"]? || 5).to_i.seconds, example: nil, validation: nil}] of Nil
Class Method Summary
- .configure(&)
-
.parse(uri : String | URI)
Parses a PostgreSQL connection URI and updates settings.
- .settings
-
.to_uri : String
Builds a PostgreSQL connection URI from the current settings.
Instance Method Summary
Class Method Detail
def self.parse(uri : String | URI)
#
Parses a PostgreSQL connection URI and updates settings.
This is useful for configuring the database from a single connection string, such as from environment variables in production.
Example
# From string
PgORM::Settings.parse("postgres://user:pass@localhost:5432/mydb")
# From environment variable
PgORM::Settings.parse(ENV["DATABASE_URL"])
# From URI object
uri = URI.parse("postgres://user:pass@localhost:5432/mydb")
PgORM::Settings.parse(uri)
def self.to_uri : String
#
Builds a PostgreSQL connection URI from the current settings.
The URI is cached after first generation for performance.
Example
PgORM::Settings.to_uri
# => "postgres://user:pass@localhost:5432/mydb"