Sinatra设置-环境中嵌套的变量不工作?(辛纳屈:ConfigFile)



我有一个使用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'

最新更新