README.md in passenger_api-0.1.0 vs README.md in passenger_api-0.2.0
- old
+ new
@@ -1,34 +1,72 @@
# PassengerAPI
PassengerAPI is a Rack application to access Passenger internal APIs.
+[![Gem Version](https://badge.fury.io/rb/passenger_api.svg)](https://badge.fury.io/rb/passenger_api)
[![Build Status](https://travis-ci.org/m4i/passenger_api.svg?branch=master)](https://travis-ci.org/m4i/passenger_api)
[![Test Coverage](https://codeclimate.com/github/m4i/passenger_api/badges/coverage.svg)](https://codeclimate.com/github/m4i/passenger_api/coverage)
[![Code Climate](https://codeclimate.com/github/m4i/passenger_api/badges/gpa.svg)](https://codeclimate.com/github/m4i/passenger_api)
-## Installation
+## Usage
-Add this line to your application's Gemfile:
+Run PassengerAPI:
-```ruby
-gem 'passenger_api'
```
+gem install passenger_api
+passenger_api
+```
-## Usage
+or
-Add this line to your application's config.ru:
+```
+docker run --rm -v /tmp:/tmp -p 3000:3000 m4i0/passenger_api
+```
-```ruby
-map('/passenger') { run PassengerAPI.new }
+Run your application:
+
```
+passenger start -p 3001
+```
Then, access API.
```
-$ passenger start -d
-$ curl localhost:3000/passenger/pool.txt
+$ curl -s localhost:3000/ping.json | jq .
+[
+ {
+ "instance": {
+ "instance_dir": {
+ "created_at": 1527877456,
+ "created_at_monotonic_usec": 8184689115911,
+ "major_version": 4,
+ "minor_version": 0,
+ "path": "/tmp/passenger.VWzMe1k"
+ },
+ "instance_id": "p9npsg-ojQFlj-pTG7Y9",
+ "integration_mode": "standalone",
+ "name": "XELqenPb",
+ "passenger_version": "5.3.1",
+ "server_software": "nginx/1.14.0 Phusion_Passenger/5.3.1",
+ "standalone_engine": "nginx",
+ "watchdog_pid": 186,
+ "core_pid": 189,
+ "state": "good"
+ },
+ "status": 200,
+ "header": {
+ "Status": "200 OK",
+ "Content-Type": "application/json",
+ "Date": "Fri, 01 Jun 2018 18:29:08 +0000",
+ "Connection": "keep-alive",
+ "Content-Length": "18"
+ },
+ "body": "{ \"status\": \"ok\" }"
+ }
+]
+
+$ curl -s localhost:3000/pool.txt | jq '.[].body' -r
----------- General information -----------
Max pool size : 6
App groups : 1
Processes : 1
Requests in top-level queue : 0
@@ -37,12 +75,52 @@
/app/public (development):
App root: /app
Requests in queue: 0
* PID: 25915 Sessions: 1 Processed: 3 Uptime: 30s
CPU: 0% Memory : 7M Last used: 0s ago
+
+$ curl -s localhost:3000/pool.xml | jq '.[].body' -r | xmllint --format -
+<?xml version="1.0" encoding="iso8859-1"?>
+<info version="3">
+ <passenger_version>5.3.1</passenger_version>
+ <group_count>1</group_count>
+ <process_count>1</process_count>
+ <max>6</max>
+ <capacity_used>1</capacity_used>
+ <get_wait_list_size>0</get_wait_list_size>
+ <supergroups>
+(snip)
+ </supergroups>
+</info>
```
+Multiple instances:
+
+```
+$ docker run -d --rm -v /tmp/a:/tmp/a phusion/passenger-ruby25 passenger start --instance-registry-dir /tmp/a
+$ docker run -d --rm -v /tmp/b:/tmp/b phusion/passenger-ruby25 passenger start --instance-registry-dir /tmp/b
+$ docker run -d --rm -v /tmp/c:/tmp/c phusion/passenger-ruby25 passenger start --instance-registry-dir /tmp/c
+$ curl -sH 'X-Passenger-Instance-Registry-Dir: /tmp/*' localhost:3000/ping.json | jq .
+[
+ {
+(snip)
+ "path": "/tmp/b/passenger.1kGFpF5"
+(snip)
+ },
+ {
+(snip)
+ "path": "/tmp/a/passenger.P5HNi8e"
+(snip)
+ },
+ {
+(snip)
+ "path": "/tmp/c/passenger.6oU9Cgi"
+(snip)
+ }
+]
+```
+
Passenger internal APIs are undocumented. If you want to know about them, please see https://github.com/phusion/passenger/issues/1407.
## Development
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -53,10 +131,10 @@
Bug reports and pull requests are welcome on GitHub at https://github.com/m4i/passenger_api. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
## License
-The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
+The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
## Code of Conduct
Everyone interacting in the PassengerAPI project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/m4i/passenger_api/blob/master/CODE_OF_CONDUCT.md).