8

一部のガイド () では、これを使用して Web サーバーを起動することを推奨しています。

bundle exec rails server puma

しかし、私はいつもサーバーをpuma直接起動しました

bundle exec puma

経由で puma (または他のサーバー) を起動すると、何か特別なことが起こりますrails serverか?

4

1 に答える 1

15

を使用する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たり、サーバーをデーモン化したりできます。

Puma2 番目の利点は、gem を .xml ファイルにリストする必要があるため、インスタンスをバージョン管理できることですGemfilebundle execこれは、あなたがやっているように始めれば、すでに真実です。

逆に、単純に実行$ puma(または$ bundle exec puma) すると、Rails システムを通過していません。Pumaラック ブートストラップ ファイルを見つけようとし、それを使用します (Railsconfig.ruがアプリケーション ルートにスクリプトを提供するため、これが機能します。

一般的に言えば、特定のオプションをサーバーに渡す必要がない場合、実質的な違いはありません。私は puma が好きで、実稼働環境で Unicorn を使用している場合でも一部のプロジェクトで使用する傾向があるため$ puma、スタンドアロン コマンドとして実行すると便利ですGemfile

ただし、$ rails s pumaスタック全体でPuma. これは、ドキュメントで提案されているコマンドでもあります。

于 2014-01-19T14:33:30.360 に答える