2011-07-14 80 views
4

當使用ruby + webrick + sinatra時,「開發模式」的概念來自哪裏?隨着Ruby + Webrick + Sinatra,「發展」在哪裏?方法從哪裏來?

require 'sinatra' 
require 'sinatra/reloader' 

get '/test' do 
    development?.to_s 
end 

當我運行由「紅寶石test.rb -p 3000」 http://localhost:3000/test返回「真」上面的應用程序......但爲什麼它返回true?開發模式是ruby,webrick,rack還是sinatra概念?另外,這個功能是否在任何地方記錄,特別是以非導軌特定的方式?我發現很多人都提到了開發模式的概念,但是我一直對找到相關信息的難度感到驚訝......也許我只是沒有谷歌正確的關鍵字......

回答

7

Sinatra的source code (base.rb)顯示這3個定義:

def development?; environment == :development end 
def production?; environment == :production end 
def test?;  environment == :test  end 

因此,那些真/假方法是基於設定的環境。西納特拉默認爲開發模式下運行,除非你告訴它,否則(當你開始西納特拉應用程序,你將看到類似

== Sinatra/1.2.6 has taken the stage on 4567 for **development** with backup from WEBrick".

要告訴它在生產環境中運行,你可以這樣做:

ruby test.rb -p 3000 -e production