【问题标题】:Rails 5 - ENV DATABASE_URL - specify encoding and collationRails 5 - ENV DATABASE_URL - 指定编码和排序规则
【发布时间】:2017-02-15 09:35:53
【问题描述】:

我们的 database.yml 已添加到 .gitignore,因此开发人员可以自定义本地环境,我们计划将 ENV['DATABASE_URL'] 用于生产服务器。对于默认设置,这是可行的。但是,我们需要将encodingcollation配置为utf8mb4

  • 编码:utf8mb4
  • 排序规则:utf8mb4_unicode_ci

我尝试将其填充到查询参数中,例如文档中的 ?pool=5 示例,但它似乎不起作用。

DATABASE_URL=mysql2://user:passwd@host:port/dbname?encoding=utf8mb4&collation=utf8mb4_unicode_ci

创建的表仍在使用默认编码/排序规则,因此我假设参数不起作用。有什么方法可以通过任何其他方法配置它吗?所有环境的编码和排序规则都是相同的。

要求是 dev 环境可以有一个带有配置的文件,而 prod 不应该添加特殊文件,它应该只使用 ENV 变量。也许将此添加到配置目录中的文件之一,例如 application.rb 或其他文件?

提前致谢。

PS:我刚接触 Rails 和 Ruby(1 周),因为我来自 PHP/Python。

【问题讨论】:

    标签: ruby-on-rails configuration mysql2


    【解决方案1】:

    您不应在 ENV 变量中指定任何配置选项。您应该保持干净并在 database.yml 文件中指定这些选项:

    production:
      encoding: utf8mb4
      collation: utf8mb4_unicode_ci
      pool: 5
    

    它的工作方式是,rails 从 DATABASE_URL 获取它可以获取的内容,然后将 database.yml 中配置的选项应用于指定环境。如果您想了解更多信息,请点击此链接:https://devcenter.heroku.com/articles/rails-database-connection-behavior#rails-4-1-and-beyond

    【讨论】:

    • 所以它混合和匹配来自 config 和 ENV 的值?明年我回去工作时会试试看(我的意思是接下来的几天)。 :D 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多