【问题标题】:sinatra config.ru: what is the configure block for?sinatra config.ru:configure 块有什么用?
【发布时间】:2013-01-02 18:41:28
【问题描述】:

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

# config.ru
require 'sinatra'

configure do
    ....
end

require './app'

run Sinatra::Application

我想定义一些东西。在 configure 块内部和外部定义它有什么区别?

# 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 可以用来对这样的环境做出反应:

configure :development do
    ....
end

所以它对不同的环境配置很有用。这个用例很清楚,但是每个环境的通用配置呢?我把它们放在哪里?这只是风格问题吗?

【问题讨论】:

    标签: ruby configuration sinatra passenger


    【解决方案1】:

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

    如果您将代码放入块中,它确实会使您的代码更具可读性(恕我直言)。它还可以让您添加基于环境的选项,然后将其放入各自的块中。

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

    【讨论】:

    • 我刚刚找到the source,它实际上只是以自身作为参数产生块。所以这只是风格问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2014-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    相关资源
    最近更新 更多