* Revert api change from #2086 introduce Puma.stats_hash api
The change in #2086 is not backwards compatible with existing gems that parse the output of Puma.stats such as barnes.
Releasing a version of puma with this change would break anyone using the Barnes app and only in production. I'm proposing to keep the existing interface and instead add a new API. This buys us all the features of #2086 without causing any production facing downtime by customers due to API incompatibilities.
Unfortunately it requires that we serialize and the de-serialize the values. One prior benefit of returning json in a string was that it allowed an end user to de-serialize using a faster json algorithm such as `oj` via the "multi json" gem. But the performance penalty will be better than a stability break.
Standard Windows Rubies have a mechanism to load the OpenSSL package when installing Puma. This is done via the metadata["msys2_mingw_dependencies"] item.
The package manager only allows installation of the most recently released package, which is currently OpenSSL 1.1.1d. Windows Ruby 2.4.x builds with OpenSSL 1.0.2.
This moves away from IO.select to using nio4r to allow the reactor to
scale beyond 1024 active clients. This happens when folks are using
websockets usually.
* require ruby 2.2+ in gemspec
As of 0ed4ba8, we are no longer running CI for ruby < 2.2. Per #1440,
puma hasn't actually been compatible with ruby 1.9 since puma 3.8.0.
github: fixes#1440
* Don't run ruby 2.1 in appveyor either
* Remove obsolete 2.1-Gemfile
To help out RubyInstaller2 and provide hints to MSYS2 about required
dependencies, `msys2_mingw_dependencies` metadata was added to the
gemspec.
This change aims to correct the typo around the new metadata field.
Ref #1434
Ref #1428
I'm not sure it runs on 1.9.3, but it doesn't compile on 1.8.7:
mini_ssl.c:4:26: error: ruby/version.h: No such file or directory
mini_ssl.c:9:21: error: ruby/io.h: No such file or directory
Because frameworks like rails dependent on rack, if puma truly wants to
be able to reload new code and thus new versions of rails, it has to be
able to reload rack as well.
Having a dependency on rack held by puma prevented that from happening
and so that dependency has been removed.
Before
```
it is highly recommended that you use a Ruby implementation with real threads like Rubinius or JRuby.
```
After
```
it is highly recommended that you use a Ruby implementation with real threads like Rubinius or JRuby.
```