假设你有一个类似的 YAML 配置文件:
defaults: &defaults
# registration form
birth_date: true
address: true
zip: true
city: true
state: true
# other stuff
send_email_notification_to_users: true
production:
<<: *defaults
development:
<<: *defaults
test:
<<: *defaults
它的加载方式与 Railcast #85 中的解释方式类似:http://railscasts.com/episodes/85-yaml-configuration-file
假设您需要测试应用程序在不同设置下的性能,您将如何做到这一点?
使用 Django,可以在单元测试期间临时更改设置:https://docs.djangoproject.com/en/dev/topics/testing/overview/#overriding-settings
是否可以用 Rails 做类似的事情?
按照 Railscast #85 中的解释实现它,只需像这样分配新值:
APP_CONFIG['perform_authentication'] = false
# or
APP_CONFIG['my_fancy_key'] = 'my fancy value'
请记住,测试用例完成后,该值不会自动更改回来,因此它将对所有后续测试用例保持有效。
动态更改配置,可能使用块之前和之后:
before(:all) do
@old_config = APP_CONFIG
APP_CONFIG = YAML.load_file("#{RAILS_ROOT}/config/config.yml")["production"]
end
after(:all) do
APP_CONFIG = @old_config
end