diff options
author | Richard Schneeman <richard.schneeman+no-recruiters@gmail.com> | 2017-02-24 19:29:34 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-02-24 19:29:34 -0600 |
commit | 0325758046ff51e1cbeae6ad7bd6d889b479cdad (patch) | |
tree | b085c7e7376680394263bd6a9b2a1841ec60c21e /railties/lib/rails | |
parent | 14ab460f8efa9d259cce0b9fa51ce87dc5687207 (diff) | |
parent | 6ac4dabbcfa092ddda24ae9ee4698a55eb495021 (diff) | |
download | rails-0325758046ff51e1cbeae6ad7bd6d889b479cdad.tar.gz rails-0325758046ff51e1cbeae6ad7bd6d889b479cdad.tar.bz2 rails-0325758046ff51e1cbeae6ad7bd6d889b479cdad.zip |
Merge pull request #28137 from schneems/schneems/fix-default-puma-port
[close #24435] Send user_supplied_options to server
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/commands/server/server_command.rb | 55 |
1 files changed, 44 insertions, 11 deletions
diff --git a/railties/lib/rails/commands/server/server_command.rb b/railties/lib/rails/commands/server/server_command.rb index d58721f648..cde8b575b5 100644 --- a/railties/lib/rails/commands/server/server_command.rb +++ b/railties/lib/rails/commands/server/server_command.rb @@ -133,22 +133,55 @@ module Rails no_commands do def server_options { - server: @server, - log_stdout: @log_stdout, - Port: port, - Host: host, - DoNotReverseLookup: true, - config: options[:config], - environment: environment, - daemonize: options[:daemon], - pid: pid, - caching: options["dev-caching"], - restart_cmd: restart_command + user_supplied_options: user_supplied_options, + server: @server, + log_stdout: @log_stdout, + Port: port, + Host: host, + DoNotReverseLookup: true, + config: options[:config], + environment: environment, + daemonize: options[:daemon], + pid: pid, + caching: options["dev-caching"], + restart_cmd: restart_command } end end private + def user_supplied_options + @user_supplied_options ||= begin + # Convert incoming options array to a hash of flags + # ["-p", "3001", "-c", "foo"] # => {"-p" => true, "-c" => true} + user_flag = {} + @original_options.each_with_index { |command, i| user_flag[command] = true if i.even? } + + # Collect all options that the user has explicitly defined so we can + # differentiate them from defaults + user_supplied_options = [] + self.class.class_options.select do |key, option| + if option.aliases.any? { |name| user_flag[name] } || user_flag["--#{option.name}"] + name = option.name.to_sym + case name + when :port + name = :Port + when :binding + name = :Host + when :"dev-caching" + name = :caching + when :daemonize + name = :daemon + end + user_supplied_options << name + end + end + user_supplied_options << :Host if ENV["Host"] + user_supplied_options << :Port if ENV["PORT"] + user_supplied_options.uniq + end + end + def port ENV.fetch("PORT", options[:port]).to_i end |