ruby-on-rails-4 - 是否可以在 Rails 中创建多级环境定义?
问题描述
假设我有一个具有通常环境的应用程序:开发、登台和生产。然后假设我有一组任务需要在一个特定的配置选项集已被覆盖的环境中运行——比如数据库主机——并且这些脚本(及其覆盖)需要在每个环境中运行.
想到的一个解决方案是为这些特殊情况中的每一个创建一整套环境,即:dboverride-development.rb
、dboverride-staging
和dboverride-production
。这些环境中的每一个都将从其主环境继承,但随后会覆盖必要的配置选项。但这似乎很麻烦,并且不涉及大量的代码复制。
rails(特别是v4)中的这个用例是否有现有的策略或约定?
解决方案
您可以使用环境变量来覆盖Rails 指南中显示的任何特定选项。
如果你有一个 config/database.yml 但没有 ENV['DATABASE_URL'] 那么这个文件将用于连接到你的数据库:
如果您同时设置了 config/database.yml 和 ENV['DATABASE_URL'] ,那么 Rails 会将配置合并在一起。为了更好地理解这一点,我们必须看一些例子。
当提供重复的连接信息时,环境变量将优先:
推荐阅读
- c# - 如何使用 IEnumerable、IEnumerator 制作自定义链接列表
- ios - 允许某些 HTTPS/SSL/TLS 证书错误,但在 iOS 中失败所有其他错误
- css - 如何使用 flexbox 将所有元素放入 React-Bootstrap 卡中?
- python - 如何在别处使用类方法中的变量
- javascript - 如何通过单击按钮或按 Enter 来调用函数?
- java - 如何通过变量向 maven-dependency-plugin:copy 目标提供工件列表?
- spring-boot - NoSuchMethodException:com.aspectj.in.spring.boot.aop.aspect.auditlog.interceptor.LoggingInterceptorAspect.aspectOf()
- android - 更改 android:name 中的属性值是否安全
元素? - html - 视口缩小时 img srcset 不会缩小
- c++ - 从 Matlab 到 C++ 的操作翻译