首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sinatra config.ru:配置块是用来做什么的?

sinatra config.ru:配置块是用来做什么的?
EN

Stack Overflow用户
提问于 2013-01-19 07:33:47
回答 1查看 9.5K关注 0票数 18

我正在使用带有Apache和Phusion-Passenger的Sinatra,具有“经典”风格:

代码语言:javascript
复制
# config.ru
require 'sinatra'

configure do
    ....
end

require './app'

run Sinatra::Application

我想给一些东西下定义。在配置块内部定义它和在外部定义它有什么不同?

代码语言:javascript
复制
# config.ru
require 'sinatra'

# A) Defining logger here
rack = File.new("logs/rack.log", "a+") 
use Rack::CommonLogger, rack

# B) Global variables here
LOGGER = Logger.new(...)

# C) Gem configuration here
DataMapper::Property::Boolean.allow_nil(false)

configure do
    # A) Or defining logger here?
    rack = File.new("logs/rack.log", "a+") 
    use Rack::CommonLogger, rack

    # B) Or global variables here?
    LOGGER = Logger.new(...)

    # C) Or gem configuration here?
    DataMapper::Property::Boolean.allow_nil(false)
    ....
end

require './app'

run Sinatra::Application

有没有一些通用的规则,应该在外面做什么,应该在里面做什么?有什么关系?我测试了这两个变体,它们似乎都工作得很好。

我知道configure可以用来对环境做出如下反应:

代码语言:javascript
复制
configure :development do
    ....
end

因此,它对不同的环境配置很有用。这个用例很清楚,但是每个环境的通用配置又如何呢?我该把它们放在哪里?这仅仅是风格问题吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-19 17:00:27

这首先是环境的问题,其次是风格的问题。你把你的配置放在哪里没有区别。

如果你把代码放到一个块中,它确实会让你的代码更具可读性(IMHO)。此外,它还允许您添加基于环境的选项,然后将这些选项放入各自的块中。

总而言之,这取决于你:)

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14409349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档