2014-01-19 4 views
4

Некоторых гидов (example) рекомендует это начать свой веб-сервер`рельсов сервера puma` против` puma`

bundle exec rails server puma 

Но я всегда только начал сервер с puma непосредственно

bundle exec puma 

Что-то особенное происходит при запуске puma (или любого другого сервера) через rails server?

ответ

9

Когда вы используете rails s <server>, сервер запускается из команды Rails и знает о среде Rails.

Это позволяет, например, использовать любые функции и флаги, предлагаемые rails server command.

rails s --help 
Usage: rails server [mongrel, thin, etc] [options] 
    -p, --port=port     Runs Rails on the specified port. 
            Default: 3000 
    -b, --binding=ip     Binds Rails to the specified ip. 
            Default: 0.0.0.0 
    -c, --config=file    Use custom rackup configuration file 
    -d, --daemon      Make server run as a Daemon. 
    -u, --debugger     Enable ruby-debugging for the server. 
    -e, --environment=name   Specifies the environment to run this server under (test/development/production). 
            Default: development 
    -P, --pid=pid     Specifies the PID file. 
            Default: tmp/pids/server.pid 

    -h, --help      Show this help message. 

Например, вы можете прикрепить отладчик к сессии, проходящей --debugger или демоном сервера.

Второе преимущество заключается в том, что вы можете использовать экземпляр Puma, так как вам нужно будет перечислить драгоценный камень в Gemfile. Это уже верно, если вы начинаете с bundle exec, как и вы.

И наоборот, когда вы просто запускаете $ puma (или $ bundle exec puma), вы не проходите через систему Rails. Puma попытается найти стойку загрузочный файл и использовать его (он работает, потому что Rails предоставляет config.ru сценария в корневом каталоге приложения.

Вообще говоря, нет никакой разницы, если вам не нужно передавать определенные параметры сервер. Мне нравится пума, и я, как правило, использовать его в некоторых проектах, даже когда на производстве мы используем единорог, таким образом, работает $ puma отдельной команды удобно, потому что мне не нужно, чтобы добавить его в Gemfile.

Однако , Я бы, вероятно, пошел с $ rails s puma, если весь мой стек использует Puma. Это также command suggested in the documentation.

+0

при запуске рельсов s puma файл конфигурации, который у вас есть, не загружается ... это недостаток. Вот быстрый псевдоним для запуска сервера с конфигурационным файлом (config/puma.rb). JUST COPY PASTE echo 'alias start_puma = "bundle exec puma -p 3000 -S ~/puma -C config/puma.rb"' >> ~/.bash_profile && source ~/.bash_profile THEN USE start_puma – blnc

Смежные вопросы