【问题标题】: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

    【讨论】:

      【解决方案2】:

      正如扎巴所说的那样

      development:
        adapter: postgresql
        encoding: unicode
        database: blog_development
        pool: 5
        username: blog
        password:
      

      如Configuring Rails Applications 中所述。但是您可能需要一个额外的min_messages: WARNING,以摆脱the nasty NOTICE messages postgresql gives you during a migration。所以我的database.yml 条目看起来像这样

      development:
        adapter: postgresql
        encoding: unicode
        database: blog_development
        pool: 5
        username: blog
        password:
        min_messages: WARNING
      

      【讨论】:

        【解决方案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)
          

          【讨论】:

            【解决方案5】:

            您可能对使用 postgres 默认生成新应用感兴趣:

            rails new myapp --database=postgresql
            

            这里提到:https://devcenter.heroku.com/articles/getting-started-with-rails4

            【讨论】:

              【解决方案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 文件中。

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 2011-07-29
                  • 2011-08-17
                  • 2015-10-30
                  • 2020-02-13
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多