如何防止 AWS-SDK gem 尝试 运行 .load_yaml_config?

How can I keep AWS-SDK gem from trying to run .load_yaml_config?

我正在开发一个支持连接到许多不同数据库的旧代码库。我正在尝试创建一个新环境,以便我可以打开一个 rails console 连接到我需要用于我正在处理的应用程序部分的特定数据库。环境的名称是 nhl_development.

到目前为止,我已经创建了一个新的配置文件并添加了相关的数据库配置:

# database.yml

generic: &generic
  adapter: postgresql
  encoding: utf8
  pool: 30

dev_default: &dev_default
  <<: *generic
  host: <%= ENV['FOO']%>
  username: <%= ENV['BAR']%>
  password: <%= ENV['BAZ']%>
  pool: 30

nhl_development:
  <<: *dev_default
  database: nhl

# config/environments/nhl_development.rb

Stats::Application.configure do
  # copied entirely from config/environments/development.rb
end

当我从我的命令行 运行 rails c nhl_development 时,我从 AWS-SDK gem:

得到以下错误
/usr/local/rvm/gems/ruby-2.2.1/gems/aws-sdk-v1-1.60.2/lib/aws/rails.rb:110:in `load_yaml_config': config/aws.yml is missing a section for `nhl_development` (RuntimeError)
...
...
from /home/me/app/config/environment.rb:5:in `<top (required)>'

我理解这条错误信息的基本要点。当我打开 config/aws.yml 时,没有 nhl_development 的配置集。但是,我不明白的是:

AWS::Rails.load_yaml_config 在哪里被调用?我认为我什至 want/need AWS 都无法在此环境中加载配置。堆栈跟踪返回到 config/environment.rb:5 但这只是初始化 Rails 应用程序的行。 config/initializers 中没有 AWS 的初始值设定项,我已经为 .load_yaml_config 在项目中查找但没有结果。我可以通过在 config/aws.yml 中为此环境添加一部分配置来让一切正常工作,但我现在不加载任何 AWS 配置。我怎样才能避免 AWS::Rails.load_yaml_config 在此环境中被调用,这样我就不必现在就去搞乱 config/aws.yml

这是 gem 本身做的。当它需要时(如果它在你的 Gemfile 中,哪些包会做)它加载 this file 注册一个初始化器(除其他外)调用 load_yaml_config.

您可以通过关闭 Gemfile 中那个 gem (require: false) 的自动请求来解决这个问题,并确保 gem 不会通过任何其他方式加载,直到在初始化程序有 运行 之后,但这听起来有点老套。我认为最简单的方法就是向该 yaml 文件添加一个条目