一些指南(示例)推荐这个来启动一个网络服务器
bundle exec rails server puma
但我总是直接启动puma
服务器
bundle exec puma
通过 启动 puma (或任何其他服务器)时会发生什么特别的事情rails server
吗?
一些指南(示例)推荐这个来启动一个网络服务器
bundle exec rails server puma
但我总是直接启动puma
服务器
bundle exec puma
通过 启动 puma (或任何其他服务器)时会发生什么特别的事情rails server
吗?
当您使用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
将尝试找到一个机架引导文件并使用它(它可以工作,因为 Railsconfig.ru
在应用程序根目录中提供了一个脚本。
一般来说,如果您不需要将特定选项传递给服务器,则没有真正的区别。我喜欢 puma,即使在生产中我们使用 Unicorn,我也倾向于在某些项目中使用它,因此$ puma
作为独立命令运行很方便,因为我不需要将它添加到Gemfile
.
但是,$ rails s puma
如果我的整个堆栈都使用Puma
. 这也是文档中建议的命令。