2014-01-19 114 views
4

一些導遊(example)推薦給啓動一個的Web服務器`軌服務器puma`與`puma`

bundle exec rails server puma 

但我總是剛開始的服務器puma直接

bundle exec puma 

當通過rails server啓動puma(或任何其他服務器)時會發生什麼特殊情況?

回答

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

然而,如果我的整個堆棧使用Puma,我可能會用$ rails s puma。這也是command suggested in the documentation

+0

當運行rails 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