我们的database.yml已添加到.gitignore
,因此开发人员可以自定义本地环境,我们计划将ENV['DATABASE_URL']
用于生产服务器。对于默认设置,这是有效的。但是,我们需要将encoding
和collation
配置为utf8mb4
。
我尝试将其填充以查询参数,例如文档中的?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。
答案 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