Rails config/local_env.yml vs .env vs bashrc 环境变量

man*_*ain 2 ruby ruby-on-rails environment-variables

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

sa7*_*a77 5

所有这些方法都用于将环境变量提供给您的 Rails 应用程序。因此,从应用程序的角度来看,无论您是从.env.bashrcconfig/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 来运行应用程序。

  • @mangocaptain,您只需将所有配置放在“.env.Production”上,并具有“RAILS_ENV=Production”,并在“config/environments/Production”上添加以下行:“require 'dotenv'”,后跟“Dotenv.load” .rb` 文件才能正常工作 (3认同)