公開日: | 最終更新日:
【Rails】 rails server(rails s)の便利な使い方とは?
rails severコマンドを実行すると、開発用のPC上でWebブラウザを経由してRailsアプリケーションにアクセスすることができます。
次の動画のように、ターミナルでrails server
を実行します。
そして、ブラウザを立ち上げてhttp://localhost:3000にアクセスすると、Railsアプリケーションが動作します。
このコマンドを実行するだけで、Railsアプリケーションを起動することができるので簡単ですね。rails serverコマンドには、他にも便利な使い方が沢山あるので1つ1つ整理しながら学んでいきましょう。
rails serverコマンドの使い方
この章では、rails serverコマンドは「何をすることができるのか、基本的な使い方、オプション」について解説します。
何をすることができるのか?
Railsには、標準でPumaというWebサーバが付随しています。
rails server
を実行すると、次の画像のようにPumaが起動し、ブラウザ経由でアプリケーションにアクセスすることが出来るようになります。
このサーバ自体は、開発用のPC上に作られたものです。外部に公開しているわけではないので、他のPCからブラウザ経由でアプリケーションにアクセスすることはできません。
また、Pumaはデフォルトで3000番ポートを使用するので、現在使用しているシステムを表すlocalhost
を使ってhttp://localhost:3000でアプリケーションにアクセスできます。
上記の画像のように、コマンド実行前はWebブラウザでhttp://localhost:3000を開いてもアプリケーションにアクセスすることはできませんでしたが、コマンド実行後にはアクセスすることができています。
Webサーバを起動する
サーバを起動するには、ターミナルで起動させたいアプリケーションのディレクトリに移動して、次のコマンドを実行します。
1
rails server
上記のserver
は、別名(エイリアス)としてs
が付けられているので、次のコマンドでも同じようにWebサーバを起動することができます。
1
rails s
コマンドを実行してからサーバの起動までは、次の動画のように少し時間がかかります。
Use Ctrl-C to stop
まで表示されたら起動完了するので、Webブラウザを立ち上げてhttp://localhost:3000を開くと、アプリケーションにアクセスできます。
次の章からrails server
ではなく、rails s
で統一させていただきます。
ログの出力を確認する
rails s
を実行したターミナルでは、WebブラウザからWebサーバにリクエストを送信し、レスポンスが返るまでのログが出力されます。
次の動画は、http://localhost:3000にアクセスした時に出力されたログです。
Webサーバを起動したターミナルには、Webブラウザが「http://localhost:3000の情報が欲しい!」と送信したリクエストやWebサーバのレスポンス、どのVeiwファイルがレンダリングされたかなどのログが出力されます。
ログを見やすくする
ターミナルに出力されるログは連続して出力されるので、確認したいリクエストがあるときは、ターミナルを改行してからリクエストを送信すると見やすくなります。
次の動画のようにターミナルで改行をします。
改行すると、次の画像のように前回のリクエストで出力されたログとカーソルとの間が開いている状態になります。
この状態で、Webブラウザで確認したいリクエスト(http://localhost:3000/users)を送信します。
リクエスト送信後にターミナルに戻ると、次の動画のように改行した後に送信したリクエストのログが出力されるので確認しやすくなっていますね。
ログが出力されるファイル
このログはターミナルだけではなくlog配下のファイルにも出力されます。
rails s
を実行すると、デフォルトでは開発環境でサーバが起動されるので、ログはlog/development.log
に出力されます。
個人の開発環境のログなどは、gitにあげる必要がないものなので、gitignoreに入れてない人はgitignoreに入れるようにしましょう。(gitignoreの書き方を参考にして下さい)
また、コマンドを実行したターミナルはログが出力され続けるため、コマンドを打つことができません。この場合は一度サーバを停止する必要がありますが、そのたびに「サーバ停止→サーバ起動」の手順を踏むのは煩わしいですよね。
そのため次の動画のように右クリックか⌘(command) + t
で、コマンドを打てる状態の別タブを開いておくと便利です。
サーバを停止する
サーバを停止するには、ターミナルで⌃(control) + c
を実行して下さい。
⌃(control) + c
を実行してサーバを停止した後は、次の動画のようにアプリケーションにアクセスできなくなります。
また、サーバをきちんと停止せずに別タブのターミナルでrails s
を実行した場合は、当然サーバは既に起動されているので立ち上がりません。
上記の画像では、タブ1のターミナルでサーバ起動中にタブ2のターミナルでrails s
を実行した場合の結果です。
サーバを停止する前にターミナルを閉じた場合の対処法
サーバを停止する前にターミナルを閉じてしまうと、⌃(control) + c
を実行してもサーバを停止することが出来なくなります。その場合は、ターミナルでサーバが動いているプロセスを終了させる必要があります。
- サーバが動くプロセスのIDを調べる
- プロセスのIDを指定して、プロセスを終了させるコマンドを実行する
プロセスのIDを調べる方法は色々ありますが、今回はlsof -i:ポート番号
を使います。
ポート番号は、デフォルトで3000番が使用されるので次のように指定します。
1
2
# lsof -i:ポート番号
lsof -i:3000
ターミナルでこのコマンドを実行すると、次の画像のように表示されます。
サーバが動いているプロセスのID(PID)は、COMMAND
がGoogleの方ではなくrubyの3191
です。(このPIDは固定の番号ではなく、その都度違う番号が割り当てられます。)
そして、サーバのプロセスを終了させるために次のコマンドを実行します。
1
2
# kill -9 プロセスID
kill -9 3191
このコマンドを実行すると、次の動画のようにターミナルを閉じた後も動いていたサーバを停止することができます。
オプションを使う
rails serverコマンドには、次のようにオプションを指定することが出来ます。
1
2
rails server [オプション]
rails s [オプション] #同上
環境を指定する
環境を指定してサーバを起動するには、-environment [環境名]
を付けます。
1
2
rails s -environment [環境名]
rails s -e [環境名] #同上
デフォルトでは開発環境としてサーバが起動しますが、本番環境やテスト環境としてサーバを起動したい場合は、次のコマンドを実行します。
1
2
rails s -e production #本番環境として起動する
rails s -e test # テスト環境として起動する
次の画像は、rails s -e production
を実行した結果です。
Environment: development
となっているので、本番環境としてサーバを起動することが出来ていますね。
ポート番号を変更する
デフォルトで使用されるポート番号は、3000番です。
このポート番号を変更するには、次のように-port [ポート番号]
を付けます。
1
2
rails s -port [ポート番号]
rails s -p [ポート番号] #同上
3001番のポートに変更してサーバを起動するには、次のコマンドを実行します。
1
rails s -p 3001
ポート番号を変更してサーバを起動するのは、同じ開発用のPC上で複数のプロジェクトを開発する時に便利です。次の動画では3000番と3001番のポートを使用して、2つのアプリケーションを起動しています。
もし、既に指定したポート番号が使用されている場合は、次の画像のようにA server is already running
と表示されてサーバの起動ができないので注意して下さい。
ポートを開放する
ポートの開放は、サーバ起動の際に-b 0.0.0.0
をつけて実行します。実行後は、同じLAN内にある他のコンピュータから開発用PCのIPアドレス:3000でアクセスができます。
1
rails s -b 0.0.0.0
通常rails s
を実行しても、http://localhost:3000にアクセスできるのは開発用PCのみで、同じLAN内でも他のコンピュータ(PC・スマホ)からアクセスすることはできません。
しかし、ポートを開放すれば開発用PCと同じLAN内にある他のコンピュータ(PC・スマホ)からも開発用PCのIPアドレス:3000
でRailsアプリケーションにアクセスが出来ます。
Windowsなど他のOSやモバイルの表示確認をインターネットで接続できるサーバにデプロイすることなく、開発環境で行えるので大変便利です。
デーモンとしてサーバを起動する
デーモンとしてサーバを起動するには、-daemon
をつけてコマンドを実行します。
1
2
rails s -daemon
rails s -d #同上
上記のコマンドを実行すると、次の動画のようにターミナルではログが出力されませんが、Webブラウザではアプリケーションにアクセスすることができています。
このようにデーモンでサーバを起動すると、画面の裏側(バックグラウンド)で動くようになります。コマンド実行後もターミナルがそのまま使えるので便利ですね。
デーモンで起動したサーバを終了するには、次のコマンドを実行します。
1
2
# アプリケーションのディレクトリに移動して以下を実行する
kill `cat tmp/pids/server.pid`
次の動画のように、コマンドを実行するとアプリケーションにアクセスすることができなくなります。
ログを確認する場合は、log配下にあるログが出力されるファイルをみてください。
オプションのまとめ
ここまで解説したオプションは、次の表の通りです。
オプション | 説明 |
---|---|
rails s -e [環境名] |
環境を指定してサーバを起動する |
rails s -p [ポート番号] |
ポート番号を変更する |
rails s -b 0.0.0.0 |
ポート開放を行う |
rails s -d |
デーモンでサーバを起動する |
この記事のまとめ
- rails severコマンドを実行すると、開発用のPC上でWebブラウザを経由してRailsアプリケーションにアクセスできる
- 開発を進めながら動作を確認したいときに便利!
- アプリケーションにアクセスできるのは、開発用のPCのみで外部からはできない