С Ruby + Webrick + Sinatra, где находится «разработка»? метод пришел? - PullRequest
4 голосов
/ 14 июля 2011

Откуда берется понятие «режим разработки» при использовании ruby ​​+ webrick + sinatra?

require 'sinatra'
require 'sinatra/reloader'

get '/test' do
  development?.to_s
end

Когда я запускаю вышеуказанное приложение с помощью 'ruby test.rb -p 3000' http://localhost:3000/test возвращает "true" ... но почему он возвращает true?Является ли режим разработки концепцией Ruby, Webrick, Rack или Sinatra?Кроме того, документирована ли эта функциональность где-либо, в частности, не для рельсов?Я нахожу, что многие люди ссылаются на концепцию режима разработки, но я был удивлен тем, как тяжело было найти соответствующую информацию ... может быть, я просто не гуглю нужные слова ...

1 Ответ

7 голосов
/ 14 июля 2011

Исходный код Синатры (base.rb) показывает эти 3 определения:

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

Таким образом, эти методы true / false основаны на заданной среде. По умолчанию 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
...