Deprecate support for using `HOST` environment to specify server IP (#32540)

At SuSE, `$HOST` is set by default and is equal to `$HOSTNAME`.
https://www.suse.com/documentation/sled11/book_sle_admin/data/sec_adm_variables.html

Therefore, by default, it binds to hostname instead of `localhost`.
This seems not to be appropriate as default behavior.

In order to avoid the name of the environment variable being used,
I changed the environment variable from `HOST` to `BINDING`.

Fixes #29516.
This commit is contained in:
Yuji Yaginuma 2018-04-16 14:35:13 +09:00 committed by GitHub
parent d472229f1f
commit 37b373a8d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 35 additions and 3 deletions

View File

@ -1,3 +1,11 @@
* Deprecate support for using the `HOST` environment to specify the server IP.
The `BINDING` environment should be used instead.
Fixes #29516.
*Yuji Yaginuma*
* Deprecate passing Rack server name as a regular argument to `rails server`.
Previously:

View File

@ -219,7 +219,7 @@ module Rails
user_supplied_options << name
end
end
user_supplied_options << :Host if ENV["HOST"]
user_supplied_options << :Host if ENV["HOST"] || ENV["BINDING"]
user_supplied_options << :Port if ENV["PORT"]
user_supplied_options.uniq
end
@ -234,7 +234,17 @@ module Rails
options[:binding]
else
default_host = environment == "development" ? "localhost" : "0.0.0.0"
ENV.fetch("HOST", default_host)
if ENV["HOST"] && !ENV["BINDING"]
ActiveSupport::Deprecation.warn(<<-MSG.squish)
Using the `HOST` environment to specify the IP is deprecated and will be removed in Rails 6.1.
Please use `BINDING` environment instead.
MSG
return ENV["HOST"]
end
ENV.fetch("BINDING", default_host)
end
end

View File

@ -90,6 +90,15 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase
def test_environment_with_host
switch_env "HOST", "1.2.3.4" do
assert_deprecated do
options = parse_arguments
assert_equal "1.2.3.4", options[:Host]
end
end
end
def test_environment_with_binding
switch_env "BINDING", "1.2.3.4" do
options = parse_arguments
assert_equal "1.2.3.4", options[:Host]
end
@ -196,7 +205,7 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase
assert_equal 3000, options[:Port]
end
switch_env "HOST", "1.2.3.4" do
switch_env "BINDING", "1.2.3.4" do
args = ["-b", "127.0.0.1"]
options = parse_arguments(args)
assert_equal "127.0.0.1", options[:Host]
@ -215,6 +224,11 @@ class Rails::Command::ServerCommandTest < ActiveSupport::TestCase
server_options = parse_arguments(["--port=3001"])
assert_equal [:Port], server_options[:user_supplied_options]
switch_env "BINDING", "1.2.3.4" do
server_options = parse_arguments
assert_equal [:Host], server_options[:user_supplied_options]
end
end
def test_default_options