【问题标题】:Rails config/local_env.yml vs .env vs bashrc environment variablesRails config/local_env.yml vs .env vs bashrc 环境变量
【发布时间】:2018-01-23 16:25:38
【问题描述】:

我从这个article 中读到,您可以使用环境变量创建一个config/local_env.yml,然后使用config/application.rb 读取它以替换/优先于您在.bashrc 中导出的环境变量。那么.env 是用来做什么的呢?它与config/local_env.yml 的用途相同吗?

【问题讨论】:

    标签: ruby-on-rails ruby environment-variables


    【解决方案1】:

    所有这些方法都用于将环境变量提供给您的 Rails 应用程序。因此,从应用程序的角度来看,无论您是从 .env.bashrc 还是 config/local_env.yml 文件中导出它,它都具有相同的目的。

    这些方法的差异实际上是参与维护应用程序开发和部署环境的团队成员的个人选择问题。但是,在选择这些选项中的任何一个时,这里有几件事情需要考虑。

    .bashrc - 如果您手动配置部署服务器并且非常熟悉 linux/unix 命令行系统管理,请使用此选项。此配置文件特定于 bash shell(Bourne Again Shell)。如果你的服务器使用不同的shell,你需要配置不同的文件(例如:.zshrc如果它使用Z Shell)

    .env - 如果您想将以应用为中心的环境变量保留在应用本身内,同时为您的 rails 应用的不同运行时环境维护不同的环境变量变体,请使用此选项。例如:.env.development.env.test 文件,它们分别具有您的开发和测试环境的环境变量的特定值。这使您可以更好地控制应用的环境变量,而不必依赖您要部署应用的平台(终端 shell)。

    config/local_env.yml - 这类似于 .env 方法,由 rails gem 提供开箱即用,允许您以 yml 格式为您的应用程序配置环境变量。此方法还将您的应用配置保留在应用中,而与您用于运行应用的 shell 无关。

    【讨论】:

    • 谢谢@sa77!关于后续问题,当您部署应用程序时,服务器如何知道使用您的 .env.production 文件?那套在哪里?
    • @mangocaptain 你只需要在.env.production 上拥有所有配置并拥有RAILS_ENV=production 并拥有以下几行:require 'dotenv' 后跟Dotenv.load 在你的config/environments/production.rb 文件上,这样才能正常工作
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 2020-01-19
    • 1970-01-01
    • 2011-06-25
    • 1970-01-01
    • 2018-03-24
    • 2015-11-07
    • 1970-01-01
    相关资源
    最近更新 更多