我有一个使用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
我做错了什么?
答案 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'