【问题标题】:Ruby on Rails: How can I edit database.yml for postgresql?Ruby on Rails:如何为 postgresql 编辑 database.yml?
【发布时间】:2011-12-03 02:20:03
【问题描述】:
Rails 新应用。
当前的database.yml是这样的:
# SQLite version 3.x
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
# gem 'sqlite3'
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000
production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
我需要为 postgresql 数据库编辑这个。
我该怎么做?
【问题讨论】:
标签:
ruby-on-rails
ruby
database
ruby-on-rails-3
postgresql
【解决方案1】:
简单地说:
development:
adapter: postgresql
encoding: unicode
database: blog_development
pool: 5
username: blog
password:
host: localhost
来源:Configuring Rails Applications
【解决方案3】:
development:
adapter: postgresql
encoding: utf8
database: name
username: hading
password: my_db_password
host: localhost # not mandatory
pool: 5 # not mandatory
timeout: 5000 # not mandatory
【解决方案4】:
development:
adapter: postgresql
encoding: utf8
database: name
username: hading
password: my_db_password
pool: 5 # not mandatory
timeout: 5000 # not mandatory
host: localhost
port: your postgresql port number (5432 or 5433)
【解决方案6】:
简单地使用
rails new app_name --database=postgresql
或者如果现有的应用程序尝试
development:
adapter: postgresql
encoding: unicode
database: app_dev
pool: 5
username: username
password: password
host: localhost
【解决方案7】:
另一种方法是在 &default 中具有公共值,然后在其他环境中具有单独的值,这可以基于环境变量:
default: &default
adapter: postgresql
encoding: unicode
port: <%= ENV.fetch("POSTGRESQL_PORT", "5432") %>
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: <%= ENV['POSTGRESQL_USER_NAME'] %>
password: <%= ENV.fetch("POSTGRESQL_PASSWORD", "myS3cr3tP4ssw0rd") %>
host: <%= ENV['POSTGRESQL_HOST'] %>
development:
<<: *default
database: <%= ENV['POSTGRESQL_DB'] %>-development
host: db
test:
<<: *default
database: <%= ENV['POSTGRESQL_DB'] %>-test
host: db
production:
<<: *default
database: <%= ENV['POSTGRESQL_DB'] %>
这里所有的值都可以来自环境变量(如果您使用 Docker 或 Bitbucket Pipelines),或者您可以将它们放在您的 .env 文件中。