vitals 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (190) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/README.md +23 -3
  4. data/lib/vitals/utils.rb +4 -3
  5. data/lib/vitals/version.rb +1 -1
  6. data/lib/vitals.rb +13 -0
  7. data/vitals.gemspec +1 -1
  8. metadata +2 -184
  9. data/integration/multiverse/grape-on-rack/.gitignore +0 -7
  10. data/integration/multiverse/grape-on-rack/.rspec +0 -2
  11. data/integration/multiverse/grape-on-rack/.rubocop.yml +0 -2
  12. data/integration/multiverse/grape-on-rack/.rubocop_todo.yml +0 -50
  13. data/integration/multiverse/grape-on-rack/.travis.yml +0 -12
  14. data/integration/multiverse/grape-on-rack/Gemfile +0 -28
  15. data/integration/multiverse/grape-on-rack/Gemfile.lock +0 -187
  16. data/integration/multiverse/grape-on-rack/Guardfile +0 -8
  17. data/integration/multiverse/grape-on-rack/LICENSE +0 -21
  18. data/integration/multiverse/grape-on-rack/README.md +0 -88
  19. data/integration/multiverse/grape-on-rack/Rakefile +0 -27
  20. data/integration/multiverse/grape-on-rack/api/content_type.rb +0 -18
  21. data/integration/multiverse/grape-on-rack/api/entities.rb +0 -28
  22. data/integration/multiverse/grape-on-rack/api/get_json.rb +0 -24
  23. data/integration/multiverse/grape-on-rack/api/header_versioning.rb +0 -9
  24. data/integration/multiverse/grape-on-rack/api/path_versioning.rb +0 -9
  25. data/integration/multiverse/grape-on-rack/api/ping.rb +0 -8
  26. data/integration/multiverse/grape-on-rack/api/post_json.rb +0 -11
  27. data/integration/multiverse/grape-on-rack/api/post_put.rb +0 -24
  28. data/integration/multiverse/grape-on-rack/api/rescue_from.rb +0 -11
  29. data/integration/multiverse/grape-on-rack/api/upload_file.rb +0 -22
  30. data/integration/multiverse/grape-on-rack/api/wrap_response.rb +0 -14
  31. data/integration/multiverse/grape-on-rack/api/wrap_response_decorator.rb +0 -15
  32. data/integration/multiverse/grape-on-rack/app/acme_app.rb +0 -49
  33. data/integration/multiverse/grape-on-rack/app/api.rb +0 -18
  34. data/integration/multiverse/grape-on-rack/config/application.rb +0 -23
  35. data/integration/multiverse/grape-on-rack/config/boot.rb +0 -2
  36. data/integration/multiverse/grape-on-rack/config/environment.rb +0 -3
  37. data/integration/multiverse/grape-on-rack/config/newrelic.yml +0 -255
  38. data/integration/multiverse/grape-on-rack/config.ru +0 -11
  39. data/integration/multiverse/grape-on-rack/public/errors/404.html +0 -15
  40. data/integration/multiverse/grape-on-rack/public/errors/500.html +0 -15
  41. data/integration/multiverse/grape-on-rack/public/images/index.html +0 -1
  42. data/integration/multiverse/grape-on-rack/public/images/rack-logo.png +0 -0
  43. data/integration/multiverse/grape-on-rack/public/index.html +0 -23
  44. data/integration/multiverse/grape-on-rack/public/scripts/jquery-1.7.1.min.js +0 -4
  45. data/integration/multiverse/grape-on-rack/public/scripts/ring.js +0 -17
  46. data/integration/multiverse/grape-on-rack/spec/api/post_put_spec.rb +0 -21
  47. data/integration/multiverse/grape-on-rack/spec/fixtures/grape_logo.png +0 -0
  48. data/integration/multiverse/grape-on-rack/spec/spec_helper.rb +0 -24
  49. data/integration/multiverse/grape-on-rails/.gitignore +0 -16
  50. data/integration/multiverse/grape-on-rails/.rspec +0 -2
  51. data/integration/multiverse/grape-on-rails/.rubocop.yml +0 -6
  52. data/integration/multiverse/grape-on-rails/.rubocop_todo.yml +0 -33
  53. data/integration/multiverse/grape-on-rails/.travis.yml +0 -17
  54. data/integration/multiverse/grape-on-rails/Gemfile +0 -22
  55. data/integration/multiverse/grape-on-rails/Gemfile.lock +0 -238
  56. data/integration/multiverse/grape-on-rails/README.md +0 -29
  57. data/integration/multiverse/grape-on-rails/Rakefile +0 -16
  58. data/integration/multiverse/grape-on-rails/app/api/acme/ping.rb +0 -8
  59. data/integration/multiverse/grape-on-rails/app/api/acme/post.rb +0 -10
  60. data/integration/multiverse/grape-on-rails/app/api/acme/protected.rb +0 -13
  61. data/integration/multiverse/grape-on-rails/app/api/acme/raise.rb +0 -8
  62. data/integration/multiverse/grape-on-rails/app/api/api.rb +0 -8
  63. data/integration/multiverse/grape-on-rails/app/assets/images/rails.png +0 -0
  64. data/integration/multiverse/grape-on-rails/app/assets/javascripts/application.js +0 -15
  65. data/integration/multiverse/grape-on-rails/app/assets/javascripts/welcome.js.coffee +0 -3
  66. data/integration/multiverse/grape-on-rails/app/assets/stylesheets/application.css +0 -13
  67. data/integration/multiverse/grape-on-rails/app/assets/stylesheets/welcome.css.scss +0 -3
  68. data/integration/multiverse/grape-on-rails/app/controllers/application_controller.rb +0 -3
  69. data/integration/multiverse/grape-on-rails/app/controllers/welcome_controller.rb +0 -4
  70. data/integration/multiverse/grape-on-rails/app/helpers/application_helper.rb +0 -2
  71. data/integration/multiverse/grape-on-rails/app/helpers/welcome_helper.rb +0 -2
  72. data/integration/multiverse/grape-on-rails/app/mailers/.gitkeep +0 -0
  73. data/integration/multiverse/grape-on-rails/app/models/.gitkeep +0 -0
  74. data/integration/multiverse/grape-on-rails/app/views/layouts/application.html.erb +0 -14
  75. data/integration/multiverse/grape-on-rails/app/views/welcome/index.html.erb +0 -6
  76. data/integration/multiverse/grape-on-rails/bin/bundle +0 -3
  77. data/integration/multiverse/grape-on-rails/bin/rails +0 -4
  78. data/integration/multiverse/grape-on-rails/bin/rake +0 -4
  79. data/integration/multiverse/grape-on-rails/config/application.rb +0 -65
  80. data/integration/multiverse/grape-on-rails/config/boot.rb +0 -6
  81. data/integration/multiverse/grape-on-rails/config/database.travis.yml +0 -4
  82. data/integration/multiverse/grape-on-rails/config/database.yml +0 -16
  83. data/integration/multiverse/grape-on-rails/config/environment.rb +0 -5
  84. data/integration/multiverse/grape-on-rails/config/environments/development.rb +0 -29
  85. data/integration/multiverse/grape-on-rails/config/environments/production.rb +0 -65
  86. data/integration/multiverse/grape-on-rails/config/environments/test.rb +0 -33
  87. data/integration/multiverse/grape-on-rails/config/initializers/backtrace_silencers.rb +0 -7
  88. data/integration/multiverse/grape-on-rails/config/initializers/inflections.rb +0 -15
  89. data/integration/multiverse/grape-on-rails/config/initializers/mime_types.rb +0 -5
  90. data/integration/multiverse/grape-on-rails/config/initializers/reload_api.rb +0 -13
  91. data/integration/multiverse/grape-on-rails/config/initializers/secret_token.rb +0 -1
  92. data/integration/multiverse/grape-on-rails/config/initializers/session_store.rb +0 -8
  93. data/integration/multiverse/grape-on-rails/config/initializers/vitals.rb +0 -8
  94. data/integration/multiverse/grape-on-rails/config/initializers/wrap_parameters.rb +0 -14
  95. data/integration/multiverse/grape-on-rails/config/locales/en.yml +0 -5
  96. data/integration/multiverse/grape-on-rails/config/routes.rb +0 -5
  97. data/integration/multiverse/grape-on-rails/config.ru +0 -4
  98. data/integration/multiverse/grape-on-rails/db/schema.rb +0 -16
  99. data/integration/multiverse/grape-on-rails/db/seeds.rb +0 -7
  100. data/integration/multiverse/grape-on-rails/doc/README_FOR_APP +0 -2
  101. data/integration/multiverse/grape-on-rails/lib/assets/.gitkeep +0 -0
  102. data/integration/multiverse/grape-on-rails/lib/tasks/.gitkeep +0 -0
  103. data/integration/multiverse/grape-on-rails/log/.gitkeep +0 -0
  104. data/integration/multiverse/grape-on-rails/public/404.html +0 -26
  105. data/integration/multiverse/grape-on-rails/public/422.html +0 -26
  106. data/integration/multiverse/grape-on-rails/public/500.html +0 -25
  107. data/integration/multiverse/grape-on-rails/public/favicon.ico +0 -0
  108. data/integration/multiverse/grape-on-rails/public/robots.txt +0 -5
  109. data/integration/multiverse/grape-on-rails/script/rails +0 -6
  110. data/integration/multiverse/grape-on-rails/spec/api/ping_spec.rb +0 -15
  111. data/integration/multiverse/grape-on-rails/spec/spec_helper.rb +0 -15
  112. data/integration/multiverse/rails42_app/.gitignore +0 -18
  113. data/integration/multiverse/rails42_app/Gemfile +0 -49
  114. data/integration/multiverse/rails42_app/Gemfile.lock +0 -167
  115. data/integration/multiverse/rails42_app/README.rdoc +0 -28
  116. data/integration/multiverse/rails42_app/Rakefile +0 -6
  117. data/integration/multiverse/rails42_app/app/assets/images/.keep +0 -0
  118. data/integration/multiverse/rails42_app/app/assets/javascripts/application.js +0 -16
  119. data/integration/multiverse/rails42_app/app/assets/javascripts/posts.coffee +0 -3
  120. data/integration/multiverse/rails42_app/app/assets/stylesheets/application.css +0 -15
  121. data/integration/multiverse/rails42_app/app/assets/stylesheets/posts.scss +0 -3
  122. data/integration/multiverse/rails42_app/app/assets/stylesheets/scaffolds.scss +0 -73
  123. data/integration/multiverse/rails42_app/app/controllers/application_controller.rb +0 -5
  124. data/integration/multiverse/rails42_app/app/controllers/concerns/.keep +0 -0
  125. data/integration/multiverse/rails42_app/app/controllers/posts_controller.rb +0 -75
  126. data/integration/multiverse/rails42_app/app/helpers/application_helper.rb +0 -2
  127. data/integration/multiverse/rails42_app/app/helpers/posts_helper.rb +0 -2
  128. data/integration/multiverse/rails42_app/app/jobs/foobar_cleanup_job.rb +0 -7
  129. data/integration/multiverse/rails42_app/app/mailers/.keep +0 -0
  130. data/integration/multiverse/rails42_app/app/models/.keep +0 -0
  131. data/integration/multiverse/rails42_app/app/models/concerns/.keep +0 -0
  132. data/integration/multiverse/rails42_app/app/models/post.rb +0 -2
  133. data/integration/multiverse/rails42_app/app/views/layouts/application.html.erb +0 -14
  134. data/integration/multiverse/rails42_app/app/views/posts/_form.html.erb +0 -21
  135. data/integration/multiverse/rails42_app/app/views/posts/edit.html.erb +0 -6
  136. data/integration/multiverse/rails42_app/app/views/posts/index.html.erb +0 -27
  137. data/integration/multiverse/rails42_app/app/views/posts/index.json.jbuilder +0 -4
  138. data/integration/multiverse/rails42_app/app/views/posts/new.html.erb +0 -5
  139. data/integration/multiverse/rails42_app/app/views/posts/show.html.erb +0 -9
  140. data/integration/multiverse/rails42_app/app/views/posts/show.json.jbuilder +0 -1
  141. data/integration/multiverse/rails42_app/bin/bundle +0 -3
  142. data/integration/multiverse/rails42_app/bin/rails +0 -9
  143. data/integration/multiverse/rails42_app/bin/rake +0 -9
  144. data/integration/multiverse/rails42_app/bin/setup +0 -29
  145. data/integration/multiverse/rails42_app/bin/spring +0 -15
  146. data/integration/multiverse/rails42_app/config/application.rb +0 -26
  147. data/integration/multiverse/rails42_app/config/boot.rb +0 -3
  148. data/integration/multiverse/rails42_app/config/database.yml +0 -25
  149. data/integration/multiverse/rails42_app/config/environment.rb +0 -5
  150. data/integration/multiverse/rails42_app/config/environments/development.rb +0 -41
  151. data/integration/multiverse/rails42_app/config/environments/production.rb +0 -79
  152. data/integration/multiverse/rails42_app/config/environments/test.rb +0 -42
  153. data/integration/multiverse/rails42_app/config/initializers/assets.rb +0 -11
  154. data/integration/multiverse/rails42_app/config/initializers/backtrace_silencers.rb +0 -7
  155. data/integration/multiverse/rails42_app/config/initializers/cookies_serializer.rb +0 -3
  156. data/integration/multiverse/rails42_app/config/initializers/filter_parameter_logging.rb +0 -4
  157. data/integration/multiverse/rails42_app/config/initializers/inflections.rb +0 -16
  158. data/integration/multiverse/rails42_app/config/initializers/mime_types.rb +0 -4
  159. data/integration/multiverse/rails42_app/config/initializers/session_store.rb +0 -3
  160. data/integration/multiverse/rails42_app/config/initializers/vitals.rb +0 -15
  161. data/integration/multiverse/rails42_app/config/initializers/wrap_parameters.rb +0 -14
  162. data/integration/multiverse/rails42_app/config/locales/en.yml +0 -23
  163. data/integration/multiverse/rails42_app/config/routes.rb +0 -57
  164. data/integration/multiverse/rails42_app/config/secrets.yml +0 -22
  165. data/integration/multiverse/rails42_app/config.ru +0 -4
  166. data/integration/multiverse/rails42_app/db/migrate/20160321140358_create_posts.rb +0 -9
  167. data/integration/multiverse/rails42_app/db/schema.rb +0 -22
  168. data/integration/multiverse/rails42_app/db/seeds.rb +0 -7
  169. data/integration/multiverse/rails42_app/lib/assets/.keep +0 -0
  170. data/integration/multiverse/rails42_app/lib/tasks/.keep +0 -0
  171. data/integration/multiverse/rails42_app/log/.keep +0 -0
  172. data/integration/multiverse/rails42_app/public/404.html +0 -67
  173. data/integration/multiverse/rails42_app/public/422.html +0 -67
  174. data/integration/multiverse/rails42_app/public/500.html +0 -66
  175. data/integration/multiverse/rails42_app/public/favicon.ico +0 -0
  176. data/integration/multiverse/rails42_app/public/robots.txt +0 -5
  177. data/integration/multiverse/rails42_app/test/controllers/.keep +0 -0
  178. data/integration/multiverse/rails42_app/test/controllers/posts_controller_test.rb +0 -49
  179. data/integration/multiverse/rails42_app/test/fixtures/.keep +0 -0
  180. data/integration/multiverse/rails42_app/test/fixtures/posts.yml +0 -7
  181. data/integration/multiverse/rails42_app/test/helpers/.keep +0 -0
  182. data/integration/multiverse/rails42_app/test/integration/.keep +0 -0
  183. data/integration/multiverse/rails42_app/test/integration/vitals_flow_test.rb +0 -96
  184. data/integration/multiverse/rails42_app/test/jobs/foobar_cleanup_job_test.rb +0 -7
  185. data/integration/multiverse/rails42_app/test/mailers/.keep +0 -0
  186. data/integration/multiverse/rails42_app/test/models/.keep +0 -0
  187. data/integration/multiverse/rails42_app/test/models/post_test.rb +0 -7
  188. data/integration/multiverse/rails42_app/test/test_helper.rb +0 -11
  189. data/integration/multiverse_helper.rb +0 -16
  190. data/integration/multiverse_spec.rb +0 -40
@@ -1,88 +0,0 @@
1
- Grape API on Rack
2
- =================
3
-
4
- [![Build Status](https://travis-ci.org/ruby-grape/grape-on-rack.svg?branch=master)](https://travis-ci.org/ruby-grape/grape-on-rack)
5
- [![Dependency Status](https://gemnasium.com/ruby-grape/grape-on-rack.svg)](https://gemnasium.com/ruby-grape/grape-on-rack)
6
- [![Code Climate](https://codeclimate.com/github/ruby-grape/grape-on-rack.svg)](https://codeclimate.com/github/ruby-grape/grape-on-rack)
7
-
8
- A [Grape](http://github.com/ruby-grape/grape) API mounted on Rack.
9
-
10
- * [ping](api/ping.rb): a hello world example that returns a JSON document
11
- * [post_put](api/post_put.rb): a simple `POST` and `PUT` example
12
- * [post_json](api/post_json.rb): an example that shows a `POST` of JSON data
13
- * [get_json](api/get_json.rb): an example that pre-processes params sent as JSON data
14
- * [rescue_from](api/rescue_from.rb): an example of `rescue_from` that wraps all exceptions in an HTTP error code 500
15
- * [path_versioning](api/path_versioning.rb): an example that uses path-based versioning
16
- * [header_versioning](api/header_versioning.rb): an example that uses vendor header-based versioning
17
- * [wrap_response](api/wrap_response.rb): a middleware that wraps all responses and always returns HTTP code 200
18
- * [content_type](api/content_type.rb): an example that overrides the default `Content-Type` or returns data in both JSON and XML formats
19
- * [upload_file](api/upload_file.rb): an example that demonstrates a file upload and download
20
- * [entites](api/entities.rb): an example of using [grape-entity](https://github.com/ruby-grape/grape-entity)
21
-
22
- See
23
- ---
24
-
25
- There's a deployed [grape-on-rack on Heroku](http://grape-on-rack.herokuapp.com/).
26
-
27
- Run
28
- ---
29
-
30
- ```
31
- $ bundle install
32
- $ rackup
33
-
34
- Loading NewRelic in developer mode ...
35
- [2013-06-20 08:57:58] INFO WEBrick 1.3.1
36
- [2013-06-20 08:57:58] INFO ruby 1.9.3 (2013-02-06) [x86_64-darwin11.4.2]
37
- [2013-06-20 08:57:58] INFO WEBrick::HTTPServer#start: pid=247 port=9292
38
- ```
39
-
40
- ### Hello World
41
-
42
- Navigate to http://localhost:9292/api/ping with a browser or use `curl`.
43
-
44
- ```
45
- $ curl http://localhost:9292/api/ping
46
-
47
- {"ping":"pong"}
48
- ```
49
-
50
- ### Get Plain Text
51
-
52
- ```
53
- $ curl http://localhost:9292/api/plain_text
54
-
55
- A red brown fox jumped over the road.
56
- ```
57
-
58
- ### Upload a File
59
-
60
- ```
61
- $ curl -X POST -i -F image_file=@spec/fixtures/grape_logo.png http://localhost:9292/api/avatar
62
-
63
- {"filename":"grape_logo.png","size":4272}
64
- ```
65
-
66
- ### Upload and Download a File
67
-
68
- ```
69
- $ curl -X POST -i -F file=@spec/fixtures/grape_logo.png http://localhost:9292/api/download.png
70
- $ curl -X POST -i -F file=@api/ping.rb http://localhost:9292/api/download.rb
71
- ```
72
-
73
- List Routes
74
- -----------
75
-
76
- ```
77
- rake routes
78
- ```
79
-
80
- Explore the API
81
- ---------------
82
-
83
- Explore the API using [Swagger UI](http://petstore.swagger.io). Run the application and point the explorer to `http://localhost:9292/api/swagger_doc` or `http://grape-on-rack.herokuapp.com/api/swagger_doc`.
84
-
85
- New Relic
86
- ---------
87
-
88
- The application is setup with NewRelic w/ Developer Mode. Navigate to http://localhost:9292/newrelic after making some API calls.
@@ -1,27 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
3
-
4
- require 'rake'
5
-
6
- require 'rspec/core'
7
- require 'rspec/core/rake_task'
8
-
9
- RSpec::Core::RakeTask.new(:spec)
10
-
11
- task :environment do
12
- ENV['RACK_ENV'] ||= 'development'
13
- require File.expand_path('../config/environment', __FILE__)
14
- end
15
-
16
- task routes: :environment do
17
- Acme::API.routes.each do |route|
18
- method = route.route_method.ljust(10)
19
- path = route.route_path
20
- puts " #{method} #{path}"
21
- end
22
- end
23
-
24
- require 'rubocop/rake_task'
25
- RuboCop::RakeTask.new(:rubocop)
26
-
27
- task default: [:rubocop, :spec]
@@ -1,18 +0,0 @@
1
- module Acme
2
- class ContentType < Grape::API
3
- format :json
4
- content_type :txt, 'text/plain'
5
- content_type :xml, 'application/xml'
6
-
7
- desc 'Returns a plain text file.'
8
- get 'plain_text' do
9
- content_type 'text/plain'
10
- 'A red brown fox jumped over the road.'
11
- end
12
-
13
- desc 'Returns a response in either XML or JSON format.'
14
- get 'mixed' do
15
- { data: 'A red brown fox jumped over the road.' }
16
- end
17
- end
18
- end
@@ -1,28 +0,0 @@
1
- module Acme
2
- module Entities
3
- class Tool < Grape::Entity
4
- root 'tools', 'tool'
5
- expose :id
6
- expose :length, documentation: { type: :string, desc: 'length of the tool' }
7
- expose :weight, documentation: { type: :string, desc: 'weight of the tool' }
8
- expose :foo, documentation: { type: :string, desc: 'foo' }, if: ->(_tool, options) { options[:foo] } do |_tool, options|
9
- options[:foo]
10
- end
11
- end
12
-
13
- class API < Grape::API
14
- format :json
15
- content_type :xml, 'application/xml'
16
- formatter :xml, proc { |object|
17
- object[object.keys.first].to_xml root: object.keys.first
18
- }
19
- desc 'Exposes an entity'
20
- namespace :entities do
21
- desc 'Expose a tool', params: Acme::Entities::Tool.documentation
22
- get ':id' do
23
- present OpenStruct.new(id: params[:id], length: 10, weight: '20kg'), with: Acme::Entities::Tool, foo: params[:foo]
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,24 +0,0 @@
1
- module Acme
2
- class GetJson < Grape::API
3
- format :json
4
- desc 'Flips reticulated in a collection of splines passed as JSON in a query string.'
5
- resource :reticulated_splines do
6
- before do
7
- params.each_pair do |k, v|
8
- params[k] = JSON.parse(v) rescue v
9
- end
10
- end
11
- params do
12
- requires :splines, type: Array do
13
- requires :id, type: Integer
14
- requires :reticulated, type: Boolean
15
- end
16
- end
17
- get do
18
- params[:splines].map do |spline|
19
- spline.merge(reticulated: !spline[:reticulated])
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,9 +0,0 @@
1
- module Acme
2
- class HeaderVersioning < Grape::API
3
- version 'v1', using: :header, vendor: 'acme', format: :json, strict: true
4
- desc 'Returns acme.'
5
- get do
6
- { header: 'acme' }
7
- end
8
- end
9
- end
@@ -1,9 +0,0 @@
1
- module Acme
2
- class PathVersioning < Grape::API
3
- version 'vendor', using: :path, vendor: 'acme', format: :json
4
- desc 'Returns acme.'
5
- get do
6
- { path: 'acme' }
7
- end
8
- end
9
- end
@@ -1,8 +0,0 @@
1
- module Acme
2
- class Ping < Grape::API
3
- format :json
4
- get '/ping' do
5
- { ping: 'pong' }
6
- end
7
- end
8
- end
@@ -1,11 +0,0 @@
1
- module Acme
2
- class PostJson < Grape::API
3
- format :json
4
- desc 'Creates a spline that can be reticulated.'
5
- resource :spline do
6
- post do
7
- { reticulated: params[:reticulated] }
8
- end
9
- end
10
- end
11
- end
@@ -1,24 +0,0 @@
1
- module Acme
2
- class PostPut < Grape::API
3
- cattr_accessor :rang
4
-
5
- format :json
6
- desc 'Returns pong.'
7
- get :ring do
8
- { rang: PostPut.rang }
9
- end
10
- post :ring do
11
- result = (PostPut.rang += 1)
12
- { rang: result }
13
- end
14
- params do
15
- requires :count, type: Integer
16
- end
17
- put :ring do
18
- result = (PostPut.rang += params[:count].to_i)
19
- { rang: result }
20
- end
21
- end
22
- end
23
-
24
- Acme::PostPut.rang = 0
@@ -1,11 +0,0 @@
1
- module Acme
2
- class RescueFrom < Grape::API
3
- rescue_from :all do |e|
4
- Rack::Response.new([e.message], 500, 'Content-type' => 'text/error').finish
5
- end
6
- desc 'Raises an exception.'
7
- get :raise do
8
- raise 'Unexpected error.'
9
- end
10
- end
11
- end
@@ -1,22 +0,0 @@
1
- module Acme
2
- class UploadFile < Grape::API
3
- format :json
4
-
5
- desc 'Upload an image.'
6
- post 'avatar' do
7
- {
8
- filename: params[:image_file][:filename],
9
- size: params[:image_file][:tempfile].size
10
- }
11
- end
12
-
13
- desc 'Upload and download a file of any format.'
14
- post 'download' do
15
- filename = params[:file][:filename]
16
- content_type MIME::Types.type_for(filename)[0].to_s
17
- env['api.format'] = :binary
18
- header 'Content-Disposition', "attachment; filename*=UTF-8''#{URI.escape(filename)}"
19
- params[:file][:tempfile].read
20
- end
21
- end
22
- end
@@ -1,14 +0,0 @@
1
- require 'wrap_response_decorator'
2
-
3
- module Acme
4
- class WrapResponse < Grape::API
5
- use WrapResponseDecorator
6
- format :json
7
- namespace :decorated do
8
- desc 'Returns pong.'
9
- get :ping do
10
- { ping: 'pong' }
11
- end
12
- end
13
- end
14
- end
@@ -1,15 +0,0 @@
1
- module Acme
2
- class WrapResponseDecorator
3
- def initialize(app)
4
- @app = app
5
- end
6
-
7
- def call(env)
8
- status, headers, body_proxy = @app.call(env)
9
- bodies = body_proxy.body.map do |body|
10
- { body: JSON.parse(body), status: status }.to_json
11
- end
12
- [200, headers, bodies]
13
- end
14
- end
15
- end
@@ -1,49 +0,0 @@
1
- module Acme
2
- class App
3
- def initialize
4
- @filenames = ['', '.html', 'index.html', '/index.html']
5
- @rack_static = ::Rack::Static.new(
6
- lambda { [404, {}, []] },
7
- root: File.expand_path('../../public', __FILE__),
8
- urls: ['/']
9
- )
10
- end
11
-
12
- def self.instance
13
- @instance ||= Rack::Builder.new do
14
- use Rack::Cors do
15
- allow do
16
- origins '*'
17
- resource '*', headers: :any, methods: :get
18
- end
19
- end
20
-
21
- run Acme::App.new
22
- end.to_app
23
- end
24
-
25
- def call(env)
26
- # api
27
- response = Acme::API.call(env)
28
-
29
- # Check if the App wants us to pass the response along to others
30
- if response[1]['X-Cascade'] == 'pass'
31
- # static files
32
- request_path = env['PATH_INFO']
33
- @filenames.each do |path|
34
- response = @rack_static.call(env.merge('PATH_INFO' => request_path + path))
35
- return response if response[0] != 404
36
- end
37
- end
38
-
39
- # Serve error pages or respond with API response
40
- case response[0]
41
- when 404, 500
42
- content = @rack_static.call(env.merge('PATH_INFO' => "/errors/#{response[0]}.html"))
43
- [response[0], content[1], content[2]]
44
- else
45
- response
46
- end
47
- end
48
- end
49
- end
@@ -1,18 +0,0 @@
1
- module Acme
2
- class API < Grape::API
3
- prefix 'api'
4
- format :json
5
- mount ::Acme::Ping
6
- mount ::Acme::RescueFrom
7
- mount ::Acme::PathVersioning
8
- mount ::Acme::HeaderVersioning
9
- mount ::Acme::PostPut
10
- mount ::Acme::WrapResponse
11
- mount ::Acme::PostJson
12
- mount ::Acme::GetJson
13
- mount ::Acme::ContentType
14
- mount ::Acme::UploadFile
15
- mount ::Acme::Entities::API
16
- add_swagger_documentation api_version: 'v1'
17
- end
18
- end
@@ -1,23 +0,0 @@
1
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'api'))
2
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'app'))
3
- $LOAD_PATH.unshift(File.dirname(__FILE__))
4
-
5
- require 'boot'
6
-
7
- Bundler.require :default, ENV['RACK_ENV']
8
-
9
- Dir[File.expand_path('../../api/*.rb', __FILE__)].each do |f|
10
- require f
11
- end
12
-
13
- require 'api'
14
- require 'acme_app'
15
-
16
- require 'vitals'
17
- Vitals.configure! do |c|
18
- c.facility = 'grape_app'
19
- end
20
-
21
- require 'vitals/integrations/notifications/grape'
22
- Vitals::Integrations::Notifications::Grape.subscribe!
23
-
@@ -1,2 +0,0 @@
1
- require 'rubygems'
2
- require 'bundler/setup'
@@ -1,3 +0,0 @@
1
- ENV['RACK_ENV'] ||= 'test'
2
-
3
- require File.expand_path('../application', __FILE__)
@@ -1,255 +0,0 @@
1
- # Here are the settings that are common to all environments
2
- common: &default_settings
3
- # ============================== LICENSE KEY ===============================
4
-
5
- # You must specify the license key associated with your New Relic
6
- # account. This key binds your Agent's data to your account in the
7
- # New Relic service.
8
- license_key: '<%= ENV["NEW_RELIC_LICENSE_KEY"] %>'
9
-
10
- # Agent Enabled (Rails Only)
11
- # Use this setting to force the agent to run or not run.
12
- # Default is 'auto' which means the agent will install and run only
13
- # if a valid dispatcher such as Mongrel is running. This prevents
14
- # it from running with Rake or the console. Set to false to
15
- # completely turn the agent off regardless of the other settings.
16
- # Valid values are true, false and auto.
17
- #
18
- # agent_enabled: auto
19
-
20
- # Application Name Set this to be the name of your application as
21
- # you'd like it show up in New Relic. The service will then auto-map
22
- # instances of your application into an "application" on your
23
- # dashboard page. If you want to map this instance into multiple
24
- # apps, like "AJAX Requests" and "All UI" then specify a semicolon
25
- # separated list of up to three distinct names, or a yaml list.
26
- # Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e.,
27
- # Production, Staging, etc)
28
- #
29
- # Example:
30
- #
31
- # app_name:
32
- # - Ajax Service
33
- # - All Services
34
- #
35
- app_name: <%= ENV["NEW_RELIC_APP_NAME"] || 'Demo' %>
36
-
37
- # When "true", the agent collects performance data about your
38
- # application and reports this data to the New Relic service at
39
- # newrelic.com. This global switch is normally overridden for each
40
- # environment below. (formerly called 'enabled')
41
- monitor_mode: true
42
-
43
- # Developer mode should be off in every environment but
44
- # development as it has very high overhead in memory.
45
- developer_mode: false
46
-
47
- # The newrelic agent generates its own log file to keep its logging
48
- # information separate from that of your application. Specify its
49
- # log level here.
50
- log_level: info
51
-
52
- # Optionally set the path to the log file This is expanded from the
53
- # root directory (may be relative or absolute, e.g. 'log/' or
54
- # '/var/log/') The agent will attempt to create this directory if it
55
- # does not exist.
56
- # log_file_path: 'log'
57
-
58
- # Optionally set the name of the log file, defaults to 'newrelic_agent.log'
59
- # log_file_name: 'newrelic_agent.log'
60
-
61
- # The newrelic agent communicates with the service via http by
62
- # default. If you want to communicate via https to increase
63
- # security, then turn on SSL by setting this value to true. Note,
64
- # this will result in increased CPU overhead to perform the
65
- # encryption involved in SSL communication, but this work is done
66
- # asynchronously to the threads that process your application code,
67
- # so it should not impact response times.
68
- ssl: false
69
-
70
- # EXPERIMENTAL: enable verification of the SSL certificate sent by
71
- # the server. This setting has no effect unless SSL is enabled
72
- # above. This may block your application. Only enable it if the data
73
- # you send us needs end-to-end verified certificates.
74
- #
75
- # This means we cannot cache the DNS lookup, so each request to the
76
- # service will perform a lookup. It also means that we cannot
77
- # use a non-blocking lookup, so in a worst case, if you have DNS
78
- # problems, your app may block indefinitely.
79
- # verify_certificate: true
80
-
81
- # Set your application's Apdex threshold value with the 'apdex_t'
82
- # setting, in seconds. The apdex_t value determines the buckets used
83
- # to compute your overall Apdex score.
84
- # Requests that take less than apdex_t seconds to process will be
85
- # classified as Satisfying transactions; more than apdex_t seconds
86
- # as Tolerating transactions; and more than four times the apdex_t
87
- # value as Frustrating transactions.
88
- # For more about the Apdex standard, see
89
- # http://newrelic.com/docs/general/apdex
90
-
91
- apdex_t: 0.5
92
-
93
- #============================== Browser Monitoring ===============================
94
- # New Relic Real User Monitoring gives you insight into the performance real users are
95
- # experiencing with your website. This is accomplished by measuring the time it takes for
96
- # your users' browsers to download and render your web pages by injecting a small amount
97
- # of JavaScript code into the header and footer of each page.
98
- browser_monitoring:
99
- # By default the agent automatically injects the monitoring JavaScript
100
- # into web pages. Set this attribute to false to turn off this behavior.
101
- auto_instrument: true
102
-
103
- # Proxy settings for connecting to the service.
104
- #
105
- # If a proxy is used, the host setting is required. Other settings
106
- # are optional. Default port is 8080.
107
- #
108
- # proxy_host: hostname
109
- # proxy_port: 8080
110
- # proxy_user:
111
- # proxy_pass:
112
-
113
-
114
- # Tells transaction tracer and error collector (when enabled)
115
- # whether or not to capture HTTP params. When true, frameworks can
116
- # exclude HTTP parameters from being captured.
117
- # Rails: the RoR filter_parameter_logging excludes parameters
118
- # Java: create a config setting called "ignored_params" and set it to
119
- # a comma separated list of HTTP parameter names.
120
- # ex: ignored_params: credit_card, ssn, password
121
- capture_params: true
122
-
123
-
124
- # Transaction tracer captures deep information about slow
125
- # transactions and sends this to the service once a
126
- # minute. Included in the transaction is the exact call sequence of
127
- # the transactions including any SQL statements issued.
128
- transaction_tracer:
129
-
130
- # Transaction tracer is enabled by default. Set this to false to
131
- # turn it off. This feature is only available at the Professional
132
- # and above product levels.
133
- enabled: true
134
-
135
- # Threshold in seconds for when to collect a transaction
136
- # trace. When the response time of a controller action exceeds
137
- # this threshold, a transaction trace will be recorded and sent to
138
- # the service. Valid values are any float value, or (default)
139
- # "apdex_f", which will use the threshold for an dissatisfying
140
- # Apdex controller action - four times the Apdex T value.
141
- transaction_threshold: apdex_f
142
-
143
- # When transaction tracer is on, SQL statements can optionally be
144
- # recorded. The recorder has three modes, "off" which sends no
145
- # SQL, "raw" which sends the SQL statement in its original form,
146
- # and "obfuscated", which strips out numeric and string literals
147
- record_sql: obfuscated
148
-
149
- # Threshold in seconds for when to collect stack trace for a SQL
150
- # call. In other words, when SQL statements exceed this threshold,
151
- # then capture and send the current stack trace. This is
152
- # helpful for pinpointing where long SQL calls originate from
153
- stack_trace_threshold: 0.500
154
-
155
- # Determines whether the agent will capture query plans for slow
156
- # SQL queries. Only supported in mysql and postgres. Should be
157
- # set to false when using other adapters.
158
- # explain_enabled: true
159
-
160
- # Threshold for query execution time below which query plans will not
161
- # not be captured. Relevant only when `explain_enabled` is true.
162
- # explain_threshold: 0.5
163
-
164
- # Error collector captures information about uncaught exceptions and
165
- # sends them to the service for viewing
166
- error_collector:
167
-
168
- # Error collector is enabled by default. Set this to false to turn
169
- # it off. This feature is only available at the Professional and above
170
- # product levels
171
- enabled: true
172
-
173
- # Rails Only - tells error collector whether or not to capture a
174
- # source snippet around the place of the error when errors are View
175
- # related.
176
- capture_source: true
177
-
178
- # To stop specific errors from reporting to New Relic, set this property
179
- # to comma separated values. Default is to ignore routing errors
180
- # which are how 404's get triggered.
181
- #
182
- ignore_errors: ActionController::RoutingError
183
-
184
- # (Advanced) Uncomment this to ensure the cpu and memory samplers
185
- # won't run. Useful when you are using the agent to monitor an
186
- # external resource
187
- # disable_samplers: true
188
-
189
- # If you aren't interested in visibility in these areas, you can
190
- # disable the instrumentation to reduce overhead.
191
- #
192
- # disable_view_instrumentation: true
193
- # disable_activerecord_instrumentation: true
194
- # disable_memcache_instrumentation: true
195
- # disable_dj: true
196
-
197
- # If you're interested in capturing memcache keys as though they
198
- # were SQL uncomment this flag. Note that this does increase
199
- # overhead slightly on every memcached call, and can have security
200
- # implications if your memcached keys are sensitive
201
- # capture_memcache_keys: true
202
-
203
- # Certain types of instrumentation such as GC stats will not work if
204
- # you are running multi-threaded. Please let us know.
205
- # multi_threaded = false
206
-
207
- # Application Environments
208
- # ------------------------------------------
209
- # Environment specific settings are in this section.
210
- # For Rails applications, RAILS_ENV is used to determine the environment
211
- # For Java applications, pass -Dnewrelic.environment <environment> to set
212
- # the environment
213
-
214
- # NOTE if your application has other named environments, you should
215
- # provide newrelic configuration settings for these environments here.
216
-
217
- development:
218
- <<: *default_settings
219
- # Turn off communication to New Relic service in development mode (also
220
- # 'enabled').
221
- # NOTE: for initial evaluation purposes, you may want to temporarily
222
- # turn the agent on in development mode.
223
- monitor_mode: false
224
-
225
- # Rails Only - when running in Developer Mode, the New Relic Agent will
226
- # present performance information on the last 100 transactions you have
227
- # executed since starting the mongrel.
228
- # NOTE: There is substantial overhead when running in developer mode.
229
- # Do not use for production or load testing.
230
- developer_mode: true
231
-
232
- # Enable textmate links
233
- # textmate: true
234
-
235
- test:
236
- <<: *default_settings
237
- # It almost never makes sense to turn on the agent when running
238
- # unit, functional or integration tests or the like.
239
- monitor_mode: false
240
-
241
- # Turn on the agent in production for 24x7 monitoring. NewRelic
242
- # testing shows an average performance impact of < 5 ms per
243
- # transaction, you you can leave this on all the time without
244
- # incurring any user-visible performance degradation.
245
- production:
246
- <<: *default_settings
247
- monitor_mode: true
248
-
249
- # Many applications have a staging environment which behaves
250
- # identically to production. Support for that environment is provided
251
- # here. By default, the staging environment has the agent turned on.
252
- staging:
253
- <<: *default_settings
254
- monitor_mode: true
255
- app_name: <%= ENV["NEW_RELIC_APP_NAME"] || 'Demo' %> (Staging)