我有一个使用Sinatra::ConfigFile的模块化Sinatra应用程序,并将我的设置分解成一个yaml文件,因此我可以在不同的环境中修改路径/url。
作为一个基本的例子,我有:
development:
url_root: 'http://127.0.0.1:9292'
production:
url_root: 'http://domain.com'
然而,settings.url_root
不工作(未定义的方法'url_root'),除非我把它从嵌套的环境块中拉出来。检查我的环境:p ENV['RACK_ENV']
返回development
.
我使用的是Sinatra 1.4.5, Sinatra -contrib 1.4.2
我做错了什么?
好吧,事实证明这是一个误解,我相信,是Sintara页面上的一个稍微令人困惑的文档,上面写着:
还可以提供特定的环境配置。有有两种方法可以做到这一点:在文件级别和设置级别。他们,分别说明如下:
development:
foo: development
bar: bar
test:
foo: test
bar: bar
production:
foo: production
bar: bar
和
foo:
development: development
test: test
production: production
bar: bar
因此,当使用Sinatra的设置yaml文件时,您需要定义变量名称,然后在其中嵌套环境 (而不是其他方式),我上面的问题的工作格式是:
url_root:
development: 'http://127.0.0.1:9292'
production: 'http://domain.com'