diff options
author | Ben Thorner <ben.thorner@digital.cabinet-office.gov.uk> | 2019-06-10 16:46:52 +0100 |
---|---|---|
committer | Ben Thorner <ben.thorner@digital.cabinet-office.gov.uk> | 2019-06-19 14:06:38 +0100 |
commit | 2e5ec9a6efc80fd266b974fc50b2775afa73130b (patch) | |
tree | de6d7f3de52367b6836d18d86ad1003ea4772f22 /railties/test | |
parent | c2847716913d3fb72fd423009be1d4f124e4aa94 (diff) | |
download | rails-2e5ec9a6efc80fd266b974fc50b2775afa73130b.tar.gz rails-2e5ec9a6efc80fd266b974fc50b2775afa73130b.tar.bz2 rails-2e5ec9a6efc80fd266b974fc50b2775afa73130b.zip |
Allow using env var to specify pidfile
Previously it was only possible to specify the location of the pidfile
for the 'rails server' command with the '-P' flag. This adds support for
specifying the pidfile using a PIDFILE env var, which can still be
overridden by the '-P' flag and with the default pidfile path unchanged.
The motivation for this feature comes from using Docker to run multiple
instances of the same rails app. When developing a rails app with
Docker, it's common to bind-mount the rails root directory in the
running container, so that changes to files are shared between the
container and the host. However, this doesn't work so well with the
pidfile and it's necessary to (remember to) add a '-P' flag to the
'rails server' command line; being able to specify this flag using an
env var would make developing with Rails+Docker a bit simpler.
Diffstat (limited to 'railties/test')
-rw-r--r-- | railties/test/commands/server_test.rb | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/railties/test/commands/server_test.rb b/railties/test/commands/server_test.rb index b78370a233..c9026e2d95 100644 --- a/railties/test/commands/server_test.rb +++ b/railties/test/commands/server_test.rb @@ -116,6 +116,13 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase end end + def test_environment_with_pidfile + switch_env "PIDFILE", "/tmp/rails.pid" do + options = parse_arguments + assert_equal "/tmp/rails.pid", options[:pid] + end + end + def test_caching_without_option args = [] options = parse_arguments(args) @@ -234,6 +241,12 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase options = parse_arguments(args) assert_equal "127.0.0.1", options[:Host] end + + switch_env "PIDFILE", "/tmp/rails.pid" do + args = ["-P", "/somewhere/else.pid"] + options = parse_arguments(args) + assert_equal "/somewhere/else.pid", options[:pid] + end end def test_records_user_supplied_options @@ -253,6 +266,16 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase server_options = parse_arguments assert_equal [:Host], server_options[:user_supplied_options] end + + switch_env "PORT", "3001" do + server_options = parse_arguments + assert_equal [:Port], server_options[:user_supplied_options] + end + + switch_env "PIDFILE", "/tmp/server.pid" do + server_options = parse_arguments + assert_equal [:pid], server_options[:user_supplied_options] + end end def test_default_options |