18

私はSinatraをApacheで使用し、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

したがって、さまざまな環境構成に役立ちます。このユースケースは明らかですが、すべての環境の一般的な構成についてはどうでしょうか。どこに置けばいいの?これはスタイルの問題だけですか?

4

1 に答える 1

12

これは、第一に環境の問題であり、第二にスタイルの問題です。構成を配置する場所に違いはありません。

ブロックに入れると、コードがはるかに読みやすくなります(IMHO)。また、環境ベースのオプションを追加して、それぞれのブロックに配置することもできます。

要約すると、それはあなた次第です:)

于 2013-01-19T09:00:26.560 に答える