如何根据生产或开发环境在Sinatra中设置全局变量?

时间:2012-01-17 10:56:25

标签: ruby sinatra

我正在使用Sinatra的set方法来分配全局变量:

set :location, 'Melbourne'

我想更新此内容,以便变量是静态的还是动态的,具体取决于应用程序是处于开发还是生产中。我在下面尝试了这个,它在开发中有效,但不在生产中:

set :location, production? ? request.location.city : 'Melbourne'

request.location.city来自地理位置宝石,此方法在其他情况下可以正常生产。我遗漏的if语句中是否存在某些内容,或者Sinatra set方法是否不接受语句?

1 个答案:

答案 0 :(得分:1)

Request在顶层不可用,只在请求处理程序中可用。

编写方法而不是全局设置,例如:

def location(request)
  production? ? request.location.city : 'Melbourne'
end