Rails s puma
またはpuma
のいずれかを使用して、Rails)でピューマサーバーを実行できます。
この回答 によると、Rails s puma
を実行すると、サーバーはRails環境を認識します。puma
のみを実行すると、サーバーエラーなどが表示されます。ではない。
私は次のように設定ファイルを設定したいと思います:
config/puma.rb
workers Integer(ENV['PUMA_WORKERS'] || 3)
threads Integer(ENV['MIN_THREADS'] || 1), Integer(ENV['MAX_THREADS'] || 16)
rackup DefaultRackup
port ENV['PORT'] || 3000
environment ENV['RACK_ENV'] || 'development'
...
puma -C config/puma.rb
を実行すると、すべてが機能します。ただし、Rails s puma
を実行すると、プーマにオプションを与える方法がわかりません。私は以下を試しました:
Rails s puma # Puma server works but no config file is passed in.
Rails s puma -C config/puma.rb # Invalid option -C
Rails s puma -c config/puma.rb # Undefined method 'workers'. So Rails is
# trying to use the config instead of puma?
puma docs のように、設定ファイルをconfig/puma/development.rb
に配置してみました。
これに関する助けに感謝します:)
ここで確認されているように、Rails s puma
を使用してpuma構成ファイルをロードすることはできません https://github.com/puma/puma/issues/512 、ここで同様の質問を見てください 「Railsサーバー」を実行すると、「puma」を自動的に開始するにはどうすればよいですか(Thinのように) これについて説明します
Foreman( https://github.com/ddollar/foreman )を使用することは、これに対する優れた回避策であり、柔軟性も向上することがわかりました。
Herokuは、このための優れたガイドを作成しました( https://devcenter.heroku.com/articles/deploying-Rails-applications-with-the-puma-web-server )。非常に簡単な開始方法を以下に示します。
ステップ1:Foremanをインストールします。以下のMacOS Xの例、Foremanサイトの完全ガイド
$ brew install foreman
ステップ2:これをGemfileに追加します:
gem 'puma'
ステップ3:Procfileというファイルを作成します。
web: bundle exec puma -C config/puma.rb
ステップ4:次に、を使用してアプリケーションを起動します。
$ foreman start
00:36:05 web.1 | started with pid 19869
00:36:05 web.1 | [19869] Puma starting in cluster mode...
00:36:05 web.1 | [19869] * Version 2.11.1 (Ruby 2.2.1-p85), codename: Intrepid Squirrel
00:36:05 web.1 | [19869] * Min threads: 1, max threads: 1
00:36:05 web.1 | [19869] * Environment: development
00:36:05 web.1 | [19869] * Process workers: 1
00:36:05 web.1 | [19869] * Preloading application
00:36:07 web.1 | [19869] * Listening on tcp://0.0.0.0:3000
00:36:07 web.1 | [19869] Use Ctrl-C to stop
00:36:07 web.1 | [19869] - Worker 0 (pid: 19870) booted, phase: 0
残念ながらできません。今日、開発環境でsslを使用してPumaを動作させる必要があったため、Rails application(Rails 5)でconfig/puma.rbファイルを編集し、次を追加しました。
ssl_bind '127.0.0.1', '3000', {
key: 'path_to_you_key_file', #/Users/DevRuby/.ssh/server.key
cert: 'path_to_yout_cert_file', #/Users/DevRuby/.ssh/server.crt
verify_mode: 'none' #fix errors due to self-signed certificate
}
そして、私のconfig/environment/development.rbに次の行を追加して、ログをSTDOUTに送信できるようにします。
config.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))
そして、#Railsを使用してアプリケーションを起動する代わりに、config /puma.rb構成ファイルのすべての設定をロードするコマンド#pumaを使用しています。
これは単なるソフトウェアであり、binディレクトリのRails実行可能ファイルを制御し、必要に応じて変更してチェックインするだけです。
bin/Rails
#!/usr/bin/env Ruby
APP_PATH = File.expand_path('../config/application', __dir__)
# We take over the Rails s invocation so we can run puma from `Rails s`
# The maintainer refuses to let `Rails server` pick up the config for puma
# so we have to call it directly: https://github.com/puma/puma/issues/512
command = ARGV.first&.downcase
exec('SERVER=puma puma') if command == 's' || command == 'server'
require_relative '../config/boot'
require 'Rails/commands'
ええ、それは醜いですが、醜いものではないことを知っています。すべてのRailsドキュメントがRails server
。