Rails 5 - ENV DATABASE_URL - 指定编码和排序规则

时间:2016-10-06 15:00:06

标签: ruby-on-rails configuration mysql2

我们的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变量。也许将它添加到config dir中的一个文件,如application.rb或其他文件?

提前致谢。

PS:我是Rails和Ruby的新手(1周),因为我来自PHP / Python。

1 个答案:

答案 0 :(得分: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