Sinatra设置 - 嵌套在环境中的变量不起作用? (西纳特拉::通过ConfigFile)

时间:2014-07-23 09:56:53

标签: ruby sinatra

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

我做错了什么?

1 个答案:

答案 0 :(得分:1)

好吧,事实证明,这是一个误解,我认为,这是一个在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'