使用Ruby + Webrick + Sinatra,'开发'在哪里?方法来自哪里?

Mic*_*ser 4 ruby rack sinatra development-mode

使用ruby + webrick + sinatra时,'开发模式'的概念来自哪里?

require 'sinatra'
require 'sinatra/reloader'

get '/test' do
  development?.to_s
end
Run Code Online (Sandbox Code Playgroud)

当我通过'ruby test.rb -p 3000'运行上述应用时,http:// localhost:3000/test返回"true"...但为什么它会返回true?开发模式是ruby,webrick,rack还是sinatra概念?此外,此功能是否记录在任何地方,特别是以非特定于轨道的方式?我发现很多人都参考了开发模式的概念,但我一直惊讶于找到相关信息的难度......也许我只是没有谷歌正确的关键词......

Dyl*_*kow 7

Sinatra的源代码(base.rb)显示了这3个定义:

def development?; environment == :development end
def production?;  environment == :production  end
def test?;        environment == :test        end
Run Code Online (Sandbox Code Playgroud)

因此,这些真/假方法基于设置环境.Sinatra默认在开发模式下运行,除非你另外说明(当你启动Sinatra应用程序时,你会看到像

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

要告诉它在生产中运行,你会这样做:

ruby test.rb -p 3000 -e production
Run Code Online (Sandbox Code Playgroud)