trogdir_api 0.5.1 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa354b0a9be8229e46f22496967be07d4fa106f9
4
- data.tar.gz: 9ec3fc1078b827dd3987ac01df784e6bc7d979c6
3
+ metadata.gz: 2607438e5dd0fa7f2cdea97665e149d141f4725d
4
+ data.tar.gz: e1bda9d84c9a77a6379a312a580621b148301bd0
5
5
  SHA512:
6
- metadata.gz: ce6b94b61bb78cb579d5aedfb725055674fde6d53bc0c479914f7aa7730e4c6307cec61f3bebafcf5eb06325b6b88b49a4642a504b816e93b7eb102606529d09
7
- data.tar.gz: 276f15973b60ab55e4f28dd9b838777165f4647bb7bdc4b97aa2df4e1f84423be7e52829f1e0d5764d7803a9311dcff0a477d06e87cd8c9b0022aed53768a2ec
6
+ metadata.gz: 97c1a400287dcd49c8983bb12e646582e23941153e9e7710be1d6a7bef91d8220f24947ace28279177abe6a31b7091b3a051a3f261c35b234203b796041aa0de
7
+ data.tar.gz: 16f405e2a307a2f33f9425f57f5a258e3de3ecd9ab0f5d1d82f2bd2e83b7024ea415106eb17db95ada31072a876194b9dec4a978139653e88a289fac4eb0f1af
data/README.md CHANGED
@@ -15,13 +15,11 @@ git clone git@github.com:biola/trogdir-api.git
15
15
  cd trogdir-api
16
16
  bundle install
17
17
  cp config/mongoid.yml.example config/mongoid.yml
18
- cp config/newrelic.yml.example config/newrelic.yml
19
18
  ```
20
19
 
21
20
  Configuration
22
21
  -------------
23
22
  - Edit `config/mongoid.yml` accordingly.
24
- - Edit `config/newrelic.yml` accordingly.
25
23
 
26
24
  Console
27
25
  -------
data/config.ru CHANGED
@@ -1,12 +1,8 @@
1
- require ::File.expand_path('../config/environment', __FILE__)
1
+ require ::File.expand_path('../config/environment', __FILE__)
2
2
 
3
3
  env = ENV['RACK_ENV'] || ENV['RAILS_ENV'] || 'development'
4
4
 
5
5
  if env == 'development'
6
- require 'newrelic_rpm'
7
- require 'new_relic/rack/developer_mode'
8
- use NewRelic::Rack::DeveloperMode
9
-
10
6
  require 'better_errors'
11
7
  use BetterErrors::Middleware
12
8
  end
@@ -15,7 +11,9 @@ file = File.new("./log/#{env}.log", 'a+')
15
11
  file.sync = true
16
12
  use Rack::CommonLogger, file
17
13
 
18
- use Pinglish, &TrogdirAPI.pinglish_block
14
+ require 'pinglish'
15
+ pinglish_path = "#{ENV['PUMA_RELATIVE_URL_ROOT']}/_ping"
16
+ use Pinglish, { path: pinglish_path }, &TrogdirAPI.pinglish_block
19
17
 
20
18
  map ENV['PUMA_RELATIVE_URL_ROOT'] || '/' do
21
19
  run Trogdir::API
data/lib/trogdir/api.rb CHANGED
@@ -1,4 +1,3 @@
1
- require 'new_relic/agent/instrumentation/rack'
2
1
  require 'rack/turnout'
3
2
 
4
3
  module Trogdir
@@ -13,7 +12,5 @@ module Trogdir
13
12
 
14
13
  route(:any, '*path') { raise_404 }
15
14
  route(:any, '/') { raise_404 }
16
-
17
- include ::NewRelic::Agent::Instrumentation::Rack
18
15
  end
19
16
  end
@@ -8,4 +8,4 @@ module Trogdir
8
8
  klass.elem_match(conditions).first or raise_404
9
9
  end
10
10
  end
11
- end
11
+ end
@@ -1,8 +1,6 @@
1
1
  module Trogdir
2
2
  module V1
3
3
  class API < Grape::API
4
- use ApiNewRelicInstrumenter
5
-
6
4
  version 'v1', using: :path
7
5
 
8
6
  helpers RequestHelpers
@@ -11,13 +11,21 @@ module Trogdir
11
11
  desc 'Get a list of people'
12
12
  params do
13
13
  optional :affiliation, type: String
14
+ optional :page, type: Integer
15
+ optional :per_page, type: Integer, default: 100
14
16
  end
15
17
  get do
16
18
  conditions = {}
17
19
 
18
20
  conditions[:affiliations] = params[:affiliation].to_s if params[:affiliation]
19
21
 
20
- present Person.where(conditions), with: PersonEntity, serializable: true
22
+ people = Person.where(conditions)
23
+ if params[:page] && params[:per_page] && params[:page] > 0
24
+ skip_count = params[:page] * params[:per_page] - params[:per_page]
25
+ people = people.skip(skip_count).limit(params[:per_page])
26
+ end
27
+
28
+ present people, with: PersonEntity, serializable: true
21
29
  end
22
30
 
23
31
  desc 'Return a person by associated id', {params: PersonEntity.documentation.except(:enabled)}
@@ -1,11 +1,9 @@
1
- require 'pinglish'
2
-
3
1
  module TrogdirAPI
4
2
  def self.pinglish_block
5
3
  Proc.new do |ping|
6
4
  ping.check :mongodb do
7
- Mongoid.default_session.command(ping: 1).has_key? 'ok'
5
+ Mongoid.default_client.command(ping: 1).documents.any?{|d| d == {'ok' => 1}}
8
6
  end
9
7
  end
10
8
  end
11
- end
9
+ end
@@ -1,3 +1,3 @@
1
1
  module TrogdirAPI
2
- VERSION = '0.5.1'
2
+ VERSION = '0.6.0'.freeze
3
3
  end
data/lib/trogdir_api.rb CHANGED
@@ -35,7 +35,6 @@ module TrogdirAPI
35
35
  end
36
36
 
37
37
  require File.expand_path('../trogdir_api/pinglish', __FILE__)
38
- require File.expand_path('../trogdir_api/newrelic', __FILE__)
39
38
  end
40
39
  end
41
40
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trogdir_api
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Crownoble
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-08 00:00:00.000000000 Z
11
+ date: 2016-11-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: api-auth
@@ -136,20 +136,6 @@ dependencies:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
- - !ruby/object:Gem::Dependency
140
- name: newrelic_rpm
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - ">="
144
- - !ruby/object:Gem::Version
145
- version: '0'
146
- type: :runtime
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - ">="
151
- - !ruby/object:Gem::Version
152
- version: '0'
153
139
  description: API for the Trogdir directory project
154
140
  email: adam.crownoble@biola.edu
155
141
  executables: []
@@ -160,9 +146,7 @@ files:
160
146
  - README.md
161
147
  - config.ru
162
148
  - config/environment.rb
163
- - config/mongoid.yml
164
149
  - config/mongoid.yml.example
165
- - config/newrelic.yml.example
166
150
  - config/settings.local.yml
167
151
  - config/settings.local.yml.example
168
152
  - config/settings.yml
@@ -189,7 +173,6 @@ files:
189
173
  - lib/trogdir/versions/v1/phones_api.rb
190
174
  - lib/trogdir/versions/v1/photos_api.rb
191
175
  - lib/trogdir_api.rb
192
- - lib/trogdir_api/newrelic.rb
193
176
  - lib/trogdir_api/pinglish.rb
194
177
  - lib/trogdir_api/version.rb
195
178
  homepage: https://github.com/biola/trogdir-api
@@ -212,9 +195,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
195
  version: '0'
213
196
  requirements: []
214
197
  rubyforge_project:
215
- rubygems_version: 2.2.2
198
+ rubygems_version: 2.6.6
216
199
  signing_key:
217
200
  specification_version: 4
218
201
  summary: Trogdir directory API
219
202
  test_files: []
220
- has_rdoc:
data/config/mongoid.yml DELETED
@@ -1,37 +0,0 @@
1
- development:
2
- clients:
3
- default:
4
- database: trogdir_development
5
- hosts:
6
- - localhost:27017
7
-
8
- test:
9
- clients:
10
- default:
11
- database: trogdir_test
12
- hosts:
13
- - localhost:27017
14
-
15
- staging:
16
- clients:
17
- default:
18
- database: trogdir
19
- hosts:
20
- - mongo1.staging.biola.edu:27017
21
- - mongo2.staging.biola.edu:27017
22
- - mongo3.staging.biola.edu:27017
23
- options:
24
- user: trogdir
25
- password: "*************"
26
-
27
- production:
28
- clients:
29
- default:
30
- database: trogdir
31
- hosts:
32
- - mongo1.prod.biola.edu:27017
33
- - mongo2.prod.biola.edu:27017
34
- - mongo3.prod.biola.edu:27017
35
- options:
36
- user: trogdir
37
- password: "*************"
@@ -1,227 +0,0 @@
1
- #
2
- # This file configures the New Relic Agent. New Relic monitors
3
- # Ruby, Java, .NET, PHP, and Python applications with deep visibility and low overhead.
4
- # For more information, visit www.newrelic.com.
5
- #
6
- # Generated May 01, 2014
7
- #
8
- # This configuration file is custom generated for Biola University
9
-
10
-
11
- # Here are the settings that are common to all environments
12
- common: &default_settings
13
- # ============================== LICENSE KEY ===============================
14
-
15
- # You must specify the license key associated with your New Relic
16
- # account. This key binds your Agent's data to your account in the
17
- # New Relic service.
18
- license_key: # set in newrelic.yml
19
-
20
- # Agent Enabled (Ruby/Rails Only)
21
- # Use this setting to force the agent to run or not run.
22
- # Default is 'auto' which means the agent will install and run only
23
- # if a valid dispatcher such as Mongrel is running. This prevents
24
- # it from running with Rake or the console. Set to false to
25
- # completely turn the agent off regardless of the other settings.
26
- # Valid values are true, false and auto.
27
- #
28
- # agent_enabled: auto
29
-
30
- # Application Name Set this to be the name of your application as
31
- # you'd like it show up in New Relic. The service will then auto-map
32
- # instances of your application into an "application" on your
33
- # dashboard page. If you want to map this instance into multiple
34
- # apps, like "AJAX Requests" and "All UI" then specify a semicolon
35
- # separated list of up to three distinct names, or a yaml list.
36
- # Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e.,
37
- # Production, Staging, etc)
38
- #
39
- # Example:
40
- #
41
- # app_name:
42
- # - Ajax Service
43
- # - All Services
44
- #
45
- app_name: trogdir-api
46
-
47
- # When "true", the agent collects performance data about your
48
- # application and reports this data to the New Relic service at
49
- # newrelic.com. This global switch is normally overridden for each
50
- # environment below. (formerly called 'enabled')
51
- monitor_mode: true
52
-
53
- # Developer mode should be off in every environment but
54
- # development as it has very high overhead in memory.
55
- developer_mode: false
56
-
57
- # The newrelic agent generates its own log file to keep its logging
58
- # information separate from that of your application. Specify its
59
- # log level here.
60
- log_level: info
61
-
62
- # Optionally set the path to the log file This is expanded from the
63
- # root directory (may be relative or absolute, e.g. 'log/' or
64
- # '/var/log/') The agent will attempt to create this directory if it
65
- # does not exist.
66
- # log_file_path: 'log'
67
-
68
- # Optionally set the name of the log file, defaults to 'newrelic_agent.log'
69
- # log_file_name: 'newrelic_agent.log'
70
-
71
- # The newrelic agent communicates with the service via https by default. This
72
- # prevents eavesdropping on the performance metrics transmitted by the agent.
73
- # The encryption required by SSL introduces a nominal amount of CPU overhead,
74
- # which is performed asynchronously in a background thread. If you'd prefer
75
- # to send your metrics over http uncomment the following line.
76
- # ssl: false
77
-
78
- #============================== Browser Monitoring ===============================
79
- # New Relic Real User Monitoring gives you insight into the performance real users are
80
- # experiencing with your website. This is accomplished by measuring the time it takes for
81
- # your users' browsers to download and render your web pages by injecting a small amount
82
- # of JavaScript code into the header and footer of each page.
83
- browser_monitoring:
84
- # By default the agent automatically injects the monitoring JavaScript
85
- # into web pages. Set this attribute to false to turn off this behavior.
86
- auto_instrument: true
87
-
88
- # Proxy settings for connecting to the New Relic server.
89
- #
90
- # If a proxy is used, the host setting is required. Other settings
91
- # are optional. Default port is 8080.
92
- #
93
- # proxy_host: hostname
94
- # proxy_port: 8080
95
- # proxy_user:
96
- # proxy_pass:
97
-
98
- # The agent can optionally log all data it sends to New Relic servers to a
99
- # separate log file for human inspection and auditing purposes. To enable this
100
- # feature, change 'enabled' below to true.
101
- # See: https://newrelic.com/docs/ruby/audit-log
102
- audit_log:
103
- enabled: false
104
-
105
- # Tells transaction tracer and error collector (when enabled)
106
- # whether or not to capture HTTP params. When true, frameworks can
107
- # exclude HTTP parameters from being captured.
108
- # Rails: the RoR filter_parameter_logging excludes parameters
109
- # Java: create a config setting called "ignored_params" and set it to
110
- # a comma separated list of HTTP parameter names.
111
- # ex: ignored_params: credit_card, ssn, password
112
- capture_params: false
113
-
114
- # Transaction tracer captures deep information about slow
115
- # transactions and sends this to the New Relic service once a
116
- # minute. Included in the transaction is the exact call sequence of
117
- # the transactions including any SQL statements issued.
118
- transaction_tracer:
119
-
120
- # Transaction tracer is enabled by default. Set this to false to
121
- # turn it off. This feature is only available at the Professional
122
- # and above product levels.
123
- enabled: true
124
-
125
- # Threshold in seconds for when to collect a transaction
126
- # trace. When the response time of a controller action exceeds
127
- # this threshold, a transaction trace will be recorded and sent to
128
- # New Relic. Valid values are any float value, or (default) "apdex_f",
129
- # which will use the threshold for an dissatisfying Apdex
130
- # controller action - four times the Apdex T value.
131
- transaction_threshold: apdex_f
132
-
133
- # When transaction tracer is on, SQL statements can optionally be
134
- # recorded. The recorder has three modes, "off" which sends no
135
- # SQL, "raw" which sends the SQL statement in its original form,
136
- # and "obfuscated", which strips out numeric and string literals.
137
- record_sql: obfuscated
138
-
139
- # Threshold in seconds for when to collect stack trace for a SQL
140
- # call. In other words, when SQL statements exceed this threshold,
141
- # then capture and send to New Relic the current stack trace. This is
142
- # helpful for pinpointing where long SQL calls originate from.
143
- stack_trace_threshold: 0.500
144
-
145
- # Determines whether the agent will capture query plans for slow
146
- # SQL queries. Only supported in mysql and postgres. Should be
147
- # set to false when using other adapters.
148
- # explain_enabled: true
149
-
150
- # Threshold for query execution time below which query plans will
151
- # not be captured. Relevant only when `explain_enabled` is true.
152
- # explain_threshold: 0.5
153
-
154
- # Error collector captures information about uncaught exceptions and
155
- # sends them to New Relic for viewing
156
- error_collector:
157
-
158
- # Error collector is enabled by default. Set this to false to turn
159
- # it off. This feature is only available at the Professional and above
160
- # product levels.
161
- enabled: true
162
-
163
- # Rails Only - tells error collector whether or not to capture a
164
- # source snippet around the place of the error when errors are View
165
- # related.
166
- capture_source: true
167
-
168
- # To stop specific errors from reporting to New Relic, set this property
169
- # to comma-separated values. Default is to ignore routing errors,
170
- # which are how 404's get triggered.
171
- ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
172
-
173
- # If you're interested in capturing memcache keys as though they
174
- # were SQL uncomment this flag. Note that this does increase
175
- # overhead slightly on every memcached call, and can have security
176
- # implications if your memcached keys are sensitive
177
- # capture_memcache_keys: true
178
-
179
- # Application Environments
180
- # ------------------------------------------
181
- # Environment-specific settings are in this section.
182
- # For Rails applications, RAILS_ENV is used to determine the environment.
183
- # For Java applications, pass -Dnewrelic.environment <environment> to set
184
- # the environment.
185
-
186
- # NOTE if your application has other named environments, you should
187
- # provide newrelic configuration settings for these environments here.
188
-
189
- development:
190
- <<: *default_settings
191
- # Turn off communication to New Relic service in development mode (also
192
- # 'enabled').
193
- # NOTE: for initial evaluation purposes, you may want to temporarily
194
- # turn the agent on in development mode.
195
- monitor_mode: false
196
-
197
- # Rails Only - when running in Developer Mode, the New Relic Agent will
198
- # present performance information on the last 100 transactions you have
199
- # executed since starting the mongrel.
200
- # NOTE: There is substantial overhead when running in developer mode.
201
- # Do not use for production or load testing.
202
- developer_mode: true
203
-
204
- # Enable textmate links
205
- # textmate: true
206
-
207
- test:
208
- <<: *default_settings
209
- # It almost never makes sense to turn on the agent when running
210
- # unit, functional or integration tests or the like.
211
- monitor_mode: false
212
-
213
- # Turn on the agent in production for 24x7 monitoring. NewRelic
214
- # testing shows an average performance impact of < 5 ms per
215
- # transaction, you can leave this on all the time without
216
- # incurring any user-visible performance degradation.
217
- production:
218
- <<: *default_settings
219
- monitor_mode: true
220
-
221
- # Many applications have a staging environment which behaves
222
- # identically to production. Support for that environment is provided
223
- # here. By default, the staging environment has the agent turned on.
224
- staging:
225
- <<: *default_settings
226
- monitor_mode: true
227
- # app_name: My Application (Staging)
@@ -1,44 +0,0 @@
1
- require 'newrelic_rpm'
2
-
3
- # Taken from https://gist.github.com/dblock/4170469
4
- class ApiNewRelicInstrumenter < Grape::Middleware::Base
5
- include NewRelic::Agent::Instrumentation::ControllerInstrumentation
6
-
7
- def call_with_newrelic(&block)
8
- trace_options = {
9
- :category => :rack,
10
- :path => "#{route_path}\##{route_method}",
11
- :request => Rack::Request.new(env)
12
- }
13
-
14
- perform_action_with_newrelic_trace(trace_options) do
15
- result = yield
16
- MetricFrame.abort_transaction! if result.first == 404 # ignore cascaded calls
17
- result
18
- end
19
- end
20
-
21
- def call(env)
22
- @env = env
23
- call_with_newrelic do
24
- super
25
- end
26
- end
27
-
28
- def env
29
- @env
30
- end
31
-
32
- def route
33
- env['api.endpoint'].routes.first
34
- end
35
-
36
- def route_method
37
- route.route_method.downcase
38
- end
39
-
40
- def route_path
41
- path = route.route_path.gsub(/^.+:version\/|^\/|:|\(.+\)/, '').tr('/', '-')
42
- "api.#{route.route_version}.#{path}"
43
- end
44
- end