config / initializers / aws_config.rb:
AWS_CONFIG = YAML.load_file("#{::Rails.root}/config/aws.yml")[Rails.env]
模型有代码:
self.bucket = AWS_CONFIG["bucket"]
测试结果:
Failure/Error: self.bucket = AWS_CONFIG['bucket']
NoMethodError:
undefined method `[]' for nil:NilClass
运行代码的开发或生产没有问题,为什么aws_config初始化程序在RSpec下失败?
答案 0 :(得分:0)
我的猜测是你的配置文件中没有设置/正确'test'。
作为额外的好处,当从config / *。yml加载配置文件时,Rails提供了一个辅助方法来获取配置。
假设您已经适当地嵌套了您的配置,您应该能够#{your app name here(find it in config/application.rb)}::Application.config_for(:aws)
,如果您已正确设置,您应该只能获取值,而不需要查看环境。
看一下这个例子
production:
secret_key: 000894jnjfbdfu39
secret_id: 123456
bucket: shadow
development:
secret_key: 000894jnjfbdfu39
secret_id: 123456
bucket: shadow
test:
secret_key: 000894jnjfbdfu39
secret_id: 123456
bucket: meadow
在您的应用程序初始化程序中,您可以拥有:
AWS_CONFIG = YourApp::Application.config_for(:aws)
在此之后所有其他事情都应该正常工作。
答案 1 :(得分:0)