* Allow extra runtime deps to be defined when using prune_bundler
* Check extra_runtime_dependencies is set before iterating over them
* Load additional paths for extra runtime dep gems
* Don't load extra dependencies, just add their paths to $LOAD_PATH
* Fix typos and extraneous checks and rescues
* Use Gem::Specification#full_require_paths when available
* Prevent use of prune_bundler and extra_runtime_dependencies with early versions of RubyGems
* Ensure LOAD_PATH is modified by extra_runtime_dependencies
* Refactor prune_bundler in launcher.rb and write some unit tests
* Fix crash when no_token is set
* Use a more meaningful name instead of an empty string
* Adds a test to ensure `{ no_token: true }` works
* Adds an explanation for the usage of a String
Just to justify the use of a String instead of a Symbol.
* Removes thread that would start the server
This removes the part of the test that would start the server. The
reason why the thread was being created originally in the PR was to
ensure that the server was booting even with `{ no_token: true }`.
I believe we don't need to test the full server boot but just ensure
that we won't pass a Symbol to OptionParser. In particular the test
ensures that the token will be set to `'none'` when `no_token: true`.
There're already other tests testing that the server boots.
When using mutual TLS, you must specify the CA certificate chain to use
for verifying the peer. Using Puma's `ssl_bind` DSL did not give you the
option of doing so, which lead to confusing errors when attempting to
use it.
Now, when specifying the `verify_mode` as either `peer` or `force_peer`,
you can use the DSL to set the `ca` value as needed within the `Binder`.
This allows you to use the DSL instead of falling back to the default
`bind` syntax via the URI-style configuration pattern.
Right now if you specify a port via `-p $PORT` and via a `config/puma.rb` then puma will incorrectly try to bind to the same port twice and will fail.
This PR calls `uniq!` on the array to remove duplicate ports from the `binds` array.
Add a lowlevel_error_handler, so we can customize the default error
message.
example:
```
lowlevel_error_handler do
[302, {'Content-Type' => 'text', 'Location' => 'foo.html'}, ['302 found']]
end
```
[fix#458]