napa 0.1.11 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/bin/napa +2 -14
- data/lib/napa/cli.rb +9 -0
- data/lib/napa/generators/scaffold_generator.rb +23 -0
- data/lib/{generators → napa/generators}/templates/scaffold/.env +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/.env.test +0 -0
- data/lib/{generators/templates/scaffold/.gitignore.tpl → napa/generators/templates/scaffold/.gitignore.tt} +1 -1
- data/lib/{generators → napa/generators}/templates/scaffold/.rubocop.yml +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/Gemfile +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/README.md +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/Rakefile +0 -0
- data/lib/{generators/templates/scaffold/app/apis/hello_api.rb → napa/generators/templates/scaffold/app/apis/hello_api.rb.tt} +2 -2
- data/lib/{generators → napa/generators}/templates/scaffold/app.rb +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/config/database.yml +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/config/initializers/active_record.rb +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/config/middleware/honeybadger.rb +0 -0
- data/lib/{generators/templates/scaffold/config.ru → napa/generators/templates/scaffold/config.ru.tt} +1 -1
- data/lib/{generators → napa/generators}/templates/scaffold/console +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/spec/apis/hello_api_spec.rb +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/spec/factories/.gitkeep +0 -0
- data/lib/{generators → napa/generators}/templates/scaffold/spec/spec_helper.rb +0 -0
- data/lib/napa/generators.rb +1 -0
- data/lib/napa/middleware/request_stats.rb +30 -0
- data/lib/napa/stats.rb +23 -0
- data/lib/napa/version.rb +1 -1
- data/lib/napa.rb +0 -1
- data/napa.gemspec +2 -0
- data/spec/middleware/request_stats_spec.rb +28 -0
- data/spec/stats_spec.rb +42 -0
- metadata +114 -47
- checksums.yaml +0 -7
- data/lib/generators/scaffold.rb +0 -68
data/bin/napa
CHANGED
@@ -1,17 +1,5 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require 'napa'
|
3
|
+
require 'napa/cli'
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
if actions.include?(ARGV[0])
|
8
|
-
if ARGV[0] == 'new'
|
9
|
-
if ARGV[1].nil?
|
10
|
-
STDOUT.write "Missing App Name, Exiting\n"
|
11
|
-
else
|
12
|
-
Napa::Generators::Scaffold.new(ARGV[1], ARGV[2])
|
13
|
-
end
|
14
|
-
end
|
15
|
-
else
|
16
|
-
STDOUT.write "Unknown Action, Exiting.\n"
|
17
|
-
end
|
5
|
+
Napa::CLI.start(ARGV)
|
data/lib/napa/cli.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'thor'
|
2
|
+
require 'active_support/core_ext/string'
|
3
|
+
|
4
|
+
module Napa
|
5
|
+
module Generators
|
6
|
+
class ScaffoldGenerator < Thor::Group
|
7
|
+
include Thor::Actions
|
8
|
+
|
9
|
+
source_root "#{File.dirname(__FILE__)}/templates/scaffold"
|
10
|
+
|
11
|
+
argument :app_name
|
12
|
+
argument :app_path, optional: true
|
13
|
+
|
14
|
+
def generate
|
15
|
+
say 'Generating scaffold...'
|
16
|
+
|
17
|
+
directory ".", (app_path || app_name)
|
18
|
+
|
19
|
+
say 'Done!', :green
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -1,11 +1,11 @@
|
|
1
|
-
module
|
1
|
+
module <%= app_name.classify %>
|
2
2
|
class API < Grape::API
|
3
3
|
format :json
|
4
4
|
|
5
5
|
resource :hello do
|
6
6
|
desc 'Return a Hello World message'
|
7
7
|
get do
|
8
|
-
{ message: 'Hello Wonderful World
|
8
|
+
{ message: 'Hello Wonderful World, from <%= app_name.classify %>!' }
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
File without changes
|
File without changes
|
data/lib/{generators → napa/generators}/templates/scaffold/config/initializers/active_record.rb
RENAMED
File without changes
|
File without changes
|
data/lib/{generators/templates/scaffold/config.ru → napa/generators/templates/scaffold/config.ru.tt}
RENAMED
@@ -14,5 +14,5 @@ use Napa::Middleware::AppMonitor
|
|
14
14
|
use Napa::Middleware::Authentication
|
15
15
|
use ActiveRecord::ConnectionAdapters::ConnectionManagement
|
16
16
|
|
17
|
-
run
|
17
|
+
run <%= app_name.classify %>::API # <-- boot your service here --
|
18
18
|
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'napa/generators/scaffold_generator'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Napa
|
2
|
+
class Middleware
|
3
|
+
class RequestStats
|
4
|
+
def initialize(app)
|
5
|
+
@app = app
|
6
|
+
end
|
7
|
+
|
8
|
+
def call(env)
|
9
|
+
# Mark the request time
|
10
|
+
start = Time.now
|
11
|
+
|
12
|
+
# Process the request
|
13
|
+
status, headers, body = @app.call(env)
|
14
|
+
|
15
|
+
# Mark the response time
|
16
|
+
stop = Time.now
|
17
|
+
|
18
|
+
# Calculate total response time
|
19
|
+
response_time = stop - start
|
20
|
+
|
21
|
+
# Emit stats to StatsD
|
22
|
+
Napa::Stats.emitter.increment('api_requests')
|
23
|
+
Napa::Stats.emitter.timing('api_response_time', response_time)
|
24
|
+
|
25
|
+
# Return the results
|
26
|
+
[status, headers, body]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/napa/stats.rb
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'statsd'
|
2
|
+
module Napa
|
3
|
+
class Stats
|
4
|
+
class << self
|
5
|
+
def emitter=(emitter)
|
6
|
+
@emitter = emitter
|
7
|
+
end
|
8
|
+
|
9
|
+
def emitter
|
10
|
+
unless @emitter
|
11
|
+
# Log an error if StatsD settings are not configured
|
12
|
+
message = 'StatsD host and port not configured in environment variables, using default settings'
|
13
|
+
Napa::Logger.logger.warn message unless ENV['STATSD_HOST'] && ENV['STATSD_PORT']
|
14
|
+
|
15
|
+
# Create a new StatsD emitter with the service name as the namespace
|
16
|
+
# Defaults to localhost port 8125 if env vars are nil
|
17
|
+
@emitter = Statsd.new(ENV['STATSD_HOST'], ENV['STATSD_PORT']).tap { |sd| sd.namespace = Napa::Identity.name }
|
18
|
+
end
|
19
|
+
@emitter
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/lib/napa/version.rb
CHANGED
data/lib/napa.rb
CHANGED
data/napa.gemspec
CHANGED
@@ -20,10 +20,12 @@ Gem::Specification.new do |gem|
|
|
20
20
|
gem.add_dependency 'logging'
|
21
21
|
gem.add_dependency 'dotenv'
|
22
22
|
gem.add_dependency 'octokit', '~> 1.25'
|
23
|
+
gem.add_dependency 'thor'
|
23
24
|
gem.add_dependency 'virtus'
|
24
25
|
gem.add_dependency 'grape'
|
25
26
|
gem.add_dependency 'grape-swagger'
|
26
27
|
gem.add_dependency 'unicorn'
|
28
|
+
gem.add_dependency 'statsd-ruby'
|
27
29
|
|
28
30
|
gem.add_development_dependency "rspec"
|
29
31
|
gem.add_development_dependency "pry"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'napa/middleware/request_stats'
|
3
|
+
|
4
|
+
describe Napa::Middleware::RequestStats do
|
5
|
+
before do
|
6
|
+
# Delete any prevous instantiations of the emitter and set valid statsd env vars
|
7
|
+
Napa::Stats.emitter = nil
|
8
|
+
ENV['STATSD_HOST'] = 'localhost'
|
9
|
+
ENV['STATSD_PORT'] = '8125'
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should increment api_requests counter' do
|
13
|
+
Napa::Stats.emitter.should_receive(:increment).with('api_requests')
|
14
|
+
app = lambda { |env| [200, { 'Content-Type' => 'application/json' }, Array.new] }
|
15
|
+
middleware = Napa::Middleware::RequestStats.new(app)
|
16
|
+
env = Rack::MockRequest.env_for('/test')
|
17
|
+
middleware.call(env)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should send the api_response_time' do
|
21
|
+
Napa::Stats.emitter.should_receive(:timing).with('api_response_time', an_instance_of(Float))
|
22
|
+
app = lambda { |env| [200, { 'Content-Type' => 'application/json'}, Array.new] }
|
23
|
+
middleware = Napa::Middleware::RequestStats.new(app)
|
24
|
+
env = Rack::MockRequest.env_for('/test')
|
25
|
+
middleware.call(env)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
data/spec/stats_spec.rb
ADDED
@@ -0,0 +1,42 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'napa/stats'
|
3
|
+
|
4
|
+
describe Napa::Stats do
|
5
|
+
before do
|
6
|
+
# Delete any prevous instantiations of the emitter
|
7
|
+
Napa::Stats.emitter = nil
|
8
|
+
# Stub out logging since there is no log to output to
|
9
|
+
Napa::Logger.stub_chain(:logger, :warn)
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'should log an error if StatsD env variables are not configured' do
|
13
|
+
ENV['STATSD_HOST'] = nil
|
14
|
+
ENV['STATSD_PORT'] = nil
|
15
|
+
message = 'StatsD host and port not configured in environment variables, using default settings'
|
16
|
+
Napa::Logger.logger.should_receive(:warn).with(message)
|
17
|
+
Napa::Stats.emitter
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'should default statsd to localhost port 8125 if env vars are not specified' do
|
21
|
+
ENV['STATSD_HOST'] = nil
|
22
|
+
ENV['STATSD_PORT'] = nil
|
23
|
+
expect(Napa::Stats.emitter.host).to eq('127.0.0.1')
|
24
|
+
expect(Napa::Stats.emitter.port).to eq(8125)
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should return a StatsD client object' do
|
28
|
+
expect(Napa::Stats.emitter.class.name).to eq('Statsd')
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'the namespace of the StatsD client object should equal the service name' do
|
32
|
+
ENV['SERVICE_NAME'] = 'my-service'
|
33
|
+
expect(Napa::Stats.emitter.namespace).to eq('my-service')
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'should use env variables to set statsd host and port' do
|
37
|
+
ENV['STATSD_HOST'] = 'localhost'
|
38
|
+
ENV['STATSD_PORT'] = '9000'
|
39
|
+
expect(Napa::Stats.emitter.host).to eq('localhost')
|
40
|
+
expect(Napa::Stats.emitter.port).to eq('9000')
|
41
|
+
end
|
42
|
+
end
|
metadata
CHANGED
@@ -1,60 +1,68 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: napa
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.12
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- Darby Frey
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date: 2013-12-
|
12
|
+
date: 2013-12-30 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: rake
|
15
16
|
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
16
18
|
requirements:
|
17
|
-
- - '>='
|
19
|
+
- - ! '>='
|
18
20
|
- !ruby/object:Gem::Version
|
19
21
|
version: '0'
|
20
22
|
type: :runtime
|
21
23
|
prerelease: false
|
22
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
23
26
|
requirements:
|
24
|
-
- - '>='
|
27
|
+
- - ! '>='
|
25
28
|
- !ruby/object:Gem::Version
|
26
29
|
version: '0'
|
27
30
|
- !ruby/object:Gem::Dependency
|
28
31
|
name: logging
|
29
32
|
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
30
34
|
requirements:
|
31
|
-
- - '>='
|
35
|
+
- - ! '>='
|
32
36
|
- !ruby/object:Gem::Version
|
33
37
|
version: '0'
|
34
38
|
type: :runtime
|
35
39
|
prerelease: false
|
36
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
37
42
|
requirements:
|
38
|
-
- - '>='
|
43
|
+
- - ! '>='
|
39
44
|
- !ruby/object:Gem::Version
|
40
45
|
version: '0'
|
41
46
|
- !ruby/object:Gem::Dependency
|
42
47
|
name: dotenv
|
43
48
|
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
44
50
|
requirements:
|
45
|
-
- - '>='
|
51
|
+
- - ! '>='
|
46
52
|
- !ruby/object:Gem::Version
|
47
53
|
version: '0'
|
48
54
|
type: :runtime
|
49
55
|
prerelease: false
|
50
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
51
58
|
requirements:
|
52
|
-
- - '>='
|
59
|
+
- - ! '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
- !ruby/object:Gem::Dependency
|
56
63
|
name: octokit
|
57
64
|
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
58
66
|
requirements:
|
59
67
|
- - ~>
|
60
68
|
- !ruby/object:Gem::Version
|
@@ -62,120 +70,169 @@ dependencies:
|
|
62
70
|
type: :runtime
|
63
71
|
prerelease: false
|
64
72
|
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
65
74
|
requirements:
|
66
75
|
- - ~>
|
67
76
|
- !ruby/object:Gem::Version
|
68
77
|
version: '1.25'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: thor
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: virtus
|
71
96
|
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
72
98
|
requirements:
|
73
|
-
- - '>='
|
99
|
+
- - ! '>='
|
74
100
|
- !ruby/object:Gem::Version
|
75
101
|
version: '0'
|
76
102
|
type: :runtime
|
77
103
|
prerelease: false
|
78
104
|
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
79
106
|
requirements:
|
80
|
-
- - '>='
|
107
|
+
- - ! '>='
|
81
108
|
- !ruby/object:Gem::Version
|
82
109
|
version: '0'
|
83
110
|
- !ruby/object:Gem::Dependency
|
84
111
|
name: grape
|
85
112
|
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
86
114
|
requirements:
|
87
|
-
- - '>='
|
115
|
+
- - ! '>='
|
88
116
|
- !ruby/object:Gem::Version
|
89
117
|
version: '0'
|
90
118
|
type: :runtime
|
91
119
|
prerelease: false
|
92
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
93
122
|
requirements:
|
94
|
-
- - '>='
|
123
|
+
- - ! '>='
|
95
124
|
- !ruby/object:Gem::Version
|
96
125
|
version: '0'
|
97
126
|
- !ruby/object:Gem::Dependency
|
98
127
|
name: grape-swagger
|
99
128
|
requirement: !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
100
130
|
requirements:
|
101
|
-
- - '>='
|
131
|
+
- - ! '>='
|
102
132
|
- !ruby/object:Gem::Version
|
103
133
|
version: '0'
|
104
134
|
type: :runtime
|
105
135
|
prerelease: false
|
106
136
|
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
107
138
|
requirements:
|
108
|
-
- - '>='
|
139
|
+
- - ! '>='
|
109
140
|
- !ruby/object:Gem::Version
|
110
141
|
version: '0'
|
111
142
|
- !ruby/object:Gem::Dependency
|
112
143
|
name: unicorn
|
113
144
|
requirement: !ruby/object:Gem::Requirement
|
145
|
+
none: false
|
146
|
+
requirements:
|
147
|
+
- - ! '>='
|
148
|
+
- !ruby/object:Gem::Version
|
149
|
+
version: '0'
|
150
|
+
type: :runtime
|
151
|
+
prerelease: false
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
- !ruby/object:Gem::Dependency
|
159
|
+
name: statsd-ruby
|
160
|
+
requirement: !ruby/object:Gem::Requirement
|
161
|
+
none: false
|
114
162
|
requirements:
|
115
|
-
- - '>='
|
163
|
+
- - ! '>='
|
116
164
|
- !ruby/object:Gem::Version
|
117
165
|
version: '0'
|
118
166
|
type: :runtime
|
119
167
|
prerelease: false
|
120
168
|
version_requirements: !ruby/object:Gem::Requirement
|
169
|
+
none: false
|
121
170
|
requirements:
|
122
|
-
- - '>='
|
171
|
+
- - ! '>='
|
123
172
|
- !ruby/object:Gem::Version
|
124
173
|
version: '0'
|
125
174
|
- !ruby/object:Gem::Dependency
|
126
175
|
name: rspec
|
127
176
|
requirement: !ruby/object:Gem::Requirement
|
177
|
+
none: false
|
128
178
|
requirements:
|
129
|
-
- - '>='
|
179
|
+
- - ! '>='
|
130
180
|
- !ruby/object:Gem::Version
|
131
181
|
version: '0'
|
132
182
|
type: :development
|
133
183
|
prerelease: false
|
134
184
|
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
none: false
|
135
186
|
requirements:
|
136
|
-
- - '>='
|
187
|
+
- - ! '>='
|
137
188
|
- !ruby/object:Gem::Version
|
138
189
|
version: '0'
|
139
190
|
- !ruby/object:Gem::Dependency
|
140
191
|
name: pry
|
141
192
|
requirement: !ruby/object:Gem::Requirement
|
193
|
+
none: false
|
142
194
|
requirements:
|
143
|
-
- - '>='
|
195
|
+
- - ! '>='
|
144
196
|
- !ruby/object:Gem::Version
|
145
197
|
version: '0'
|
146
198
|
type: :development
|
147
199
|
prerelease: false
|
148
200
|
version_requirements: !ruby/object:Gem::Requirement
|
201
|
+
none: false
|
149
202
|
requirements:
|
150
|
-
- - '>='
|
203
|
+
- - ! '>='
|
151
204
|
- !ruby/object:Gem::Version
|
152
205
|
version: '0'
|
153
206
|
- !ruby/object:Gem::Dependency
|
154
207
|
name: git
|
155
208
|
requirement: !ruby/object:Gem::Requirement
|
209
|
+
none: false
|
156
210
|
requirements:
|
157
|
-
- - '>='
|
211
|
+
- - ! '>='
|
158
212
|
- !ruby/object:Gem::Version
|
159
213
|
version: '0'
|
160
214
|
type: :development
|
161
215
|
prerelease: false
|
162
216
|
version_requirements: !ruby/object:Gem::Requirement
|
217
|
+
none: false
|
163
218
|
requirements:
|
164
|
-
- - '>='
|
219
|
+
- - ! '>='
|
165
220
|
- !ruby/object:Gem::Version
|
166
221
|
version: '0'
|
167
222
|
- !ruby/object:Gem::Dependency
|
168
223
|
name: rubocop
|
169
224
|
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
170
226
|
requirements:
|
171
|
-
- - '>='
|
227
|
+
- - ! '>='
|
172
228
|
- !ruby/object:Gem::Version
|
173
229
|
version: '0'
|
174
230
|
type: :development
|
175
231
|
prerelease: false
|
176
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
177
234
|
requirements:
|
178
|
-
- - '>='
|
235
|
+
- - ! '>='
|
179
236
|
- !ruby/object:Gem::Version
|
180
237
|
version: '0'
|
181
238
|
description: A simple framework for building APIs with Grape
|
@@ -193,27 +250,29 @@ files:
|
|
193
250
|
- README.md
|
194
251
|
- Rakefile
|
195
252
|
- bin/napa
|
196
|
-
- lib/generators/scaffold.rb
|
197
|
-
- lib/generators/templates/scaffold/.env
|
198
|
-
- lib/generators/templates/scaffold/.env.test
|
199
|
-
- lib/generators/templates/scaffold/.gitignore.tpl
|
200
|
-
- lib/generators/templates/scaffold/.rubocop.yml
|
201
|
-
- lib/generators/templates/scaffold/Gemfile
|
202
|
-
- lib/generators/templates/scaffold/README.md
|
203
|
-
- lib/generators/templates/scaffold/Rakefile
|
204
|
-
- lib/generators/templates/scaffold/app.rb
|
205
|
-
- lib/generators/templates/scaffold/app/apis/hello_api.rb
|
206
|
-
- lib/generators/templates/scaffold/config.ru
|
207
|
-
- lib/generators/templates/scaffold/config/database.yml
|
208
|
-
- lib/generators/templates/scaffold/config/initializers/active_record.rb
|
209
|
-
- lib/generators/templates/scaffold/config/middleware/honeybadger.rb
|
210
|
-
- lib/generators/templates/scaffold/console
|
211
|
-
- lib/generators/templates/scaffold/spec/apis/hello_api_spec.rb
|
212
|
-
- lib/generators/templates/scaffold/spec/factories/.gitkeep
|
213
|
-
- lib/generators/templates/scaffold/spec/spec_helper.rb
|
214
253
|
- lib/napa.rb
|
215
254
|
- lib/napa/activerecord.rb
|
216
255
|
- lib/napa/authentication.rb
|
256
|
+
- lib/napa/cli.rb
|
257
|
+
- lib/napa/generators.rb
|
258
|
+
- lib/napa/generators/scaffold_generator.rb
|
259
|
+
- lib/napa/generators/templates/scaffold/.env
|
260
|
+
- lib/napa/generators/templates/scaffold/.env.test
|
261
|
+
- lib/napa/generators/templates/scaffold/.gitignore.tt
|
262
|
+
- lib/napa/generators/templates/scaffold/.rubocop.yml
|
263
|
+
- lib/napa/generators/templates/scaffold/Gemfile
|
264
|
+
- lib/napa/generators/templates/scaffold/README.md
|
265
|
+
- lib/napa/generators/templates/scaffold/Rakefile
|
266
|
+
- lib/napa/generators/templates/scaffold/app.rb
|
267
|
+
- lib/napa/generators/templates/scaffold/app/apis/hello_api.rb.tt
|
268
|
+
- lib/napa/generators/templates/scaffold/config.ru.tt
|
269
|
+
- lib/napa/generators/templates/scaffold/config/database.yml
|
270
|
+
- lib/napa/generators/templates/scaffold/config/initializers/active_record.rb
|
271
|
+
- lib/napa/generators/templates/scaffold/config/middleware/honeybadger.rb
|
272
|
+
- lib/napa/generators/templates/scaffold/console
|
273
|
+
- lib/napa/generators/templates/scaffold/spec/apis/hello_api_spec.rb
|
274
|
+
- lib/napa/generators/templates/scaffold/spec/factories/.gitkeep
|
275
|
+
- lib/napa/generators/templates/scaffold/spec/spec_helper.rb
|
217
276
|
- lib/napa/grape_api.rb
|
218
277
|
- lib/napa/grape_extensions/error_formatter.rb
|
219
278
|
- lib/napa/grape_extensions/error_presenter.rb
|
@@ -224,6 +283,8 @@ files:
|
|
224
283
|
- lib/napa/middleware/app_monitor.rb
|
225
284
|
- lib/napa/middleware/authentication.rb
|
226
285
|
- lib/napa/middleware/logger.rb
|
286
|
+
- lib/napa/middleware/request_stats.rb
|
287
|
+
- lib/napa/stats.rb
|
227
288
|
- lib/napa/version.rb
|
228
289
|
- lib/tasks/db.rake
|
229
290
|
- lib/tasks/deploy.rake
|
@@ -236,31 +297,34 @@ files:
|
|
236
297
|
- spec/json_error_spec.rb
|
237
298
|
- spec/logger/log_transaction_spec.rb
|
238
299
|
- spec/middleware/authentication_spec.rb
|
300
|
+
- spec/middleware/request_stats_spec.rb
|
239
301
|
- spec/spec_helper.rb
|
302
|
+
- spec/stats_spec.rb
|
240
303
|
- spec/version_spec.rb
|
241
304
|
- tasks/version.rake
|
242
305
|
homepage: ''
|
243
306
|
licenses: []
|
244
|
-
metadata: {}
|
245
307
|
post_install_message:
|
246
308
|
rdoc_options: []
|
247
309
|
require_paths:
|
248
310
|
- lib
|
249
311
|
required_ruby_version: !ruby/object:Gem::Requirement
|
312
|
+
none: false
|
250
313
|
requirements:
|
251
|
-
- - '>='
|
314
|
+
- - ! '>='
|
252
315
|
- !ruby/object:Gem::Version
|
253
316
|
version: '0'
|
254
317
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
318
|
+
none: false
|
255
319
|
requirements:
|
256
|
-
- - '>='
|
320
|
+
- - ! '>='
|
257
321
|
- !ruby/object:Gem::Version
|
258
322
|
version: '0'
|
259
323
|
requirements: []
|
260
324
|
rubyforge_project:
|
261
|
-
rubygems_version:
|
325
|
+
rubygems_version: 1.8.25
|
262
326
|
signing_key:
|
263
|
-
specification_version:
|
327
|
+
specification_version: 3
|
264
328
|
summary: A simple framework for building APIs with Grape
|
265
329
|
test_files:
|
266
330
|
- spec/authentication_spec.rb
|
@@ -269,5 +333,8 @@ test_files:
|
|
269
333
|
- spec/json_error_spec.rb
|
270
334
|
- spec/logger/log_transaction_spec.rb
|
271
335
|
- spec/middleware/authentication_spec.rb
|
336
|
+
- spec/middleware/request_stats_spec.rb
|
272
337
|
- spec/spec_helper.rb
|
338
|
+
- spec/stats_spec.rb
|
273
339
|
- spec/version_spec.rb
|
340
|
+
has_rdoc:
|
checksums.yaml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
metadata.gz: fd6b925472644eaf0393cce14068d151df8ae98c
|
4
|
-
data.tar.gz: 6cd4fa2e481c78ffe9a11bca8784ef67c24b0fe0
|
5
|
-
SHA512:
|
6
|
-
metadata.gz: 4f950b660d847ea59bc2313c767ea55b3b49bad90f39839a9219f62ce3a8c66264930d3e8b7e8ce19af6b6c5680f4bbd19e6e038f07a26993fc837f62665e085
|
7
|
-
data.tar.gz: c076d3ca205321e6ba86db23bdf944d873ba069ad3507ce636db6c60e278a536349f648be2783c6fa7a3f92ea476fecb8a1aad6e5f7e0661e63a5ef25430fffc
|
data/lib/generators/scaffold.rb
DELETED
@@ -1,68 +0,0 @@
|
|
1
|
-
module Napa
|
2
|
-
module Generators
|
3
|
-
class Scaffold
|
4
|
-
def initialize(app_name, app_path = nil)
|
5
|
-
@app_name = app_name
|
6
|
-
@app_path = app_path.nil? ? app_name : app_path
|
7
|
-
@template_path = File.expand_path(File.join(File.dirname(__FILE__), 'templates/scaffold'))
|
8
|
-
@files = file_list
|
9
|
-
|
10
|
-
create_files!
|
11
|
-
|
12
|
-
STDOUT.write "Generator Finished!\n"
|
13
|
-
end
|
14
|
-
|
15
|
-
def file_list
|
16
|
-
[
|
17
|
-
'app/apis/hello_api.rb',
|
18
|
-
'app/models/.keep',
|
19
|
-
'config/database.yml',
|
20
|
-
'config/initializers/active_record.rb',
|
21
|
-
'config/middleware/honeybadger.rb',
|
22
|
-
'db/migrate/.keep',
|
23
|
-
'lib/tasks/.keep',
|
24
|
-
'log/.keep',
|
25
|
-
'public/.keep',
|
26
|
-
'spec/spec_helper.rb',
|
27
|
-
'spec/apis/hello_api_spec.rb',
|
28
|
-
'tmp/.keep',
|
29
|
-
'.env',
|
30
|
-
'.env.test',
|
31
|
-
'.rubocop.yml',
|
32
|
-
'.gitignore.tpl',
|
33
|
-
'app.rb',
|
34
|
-
'config.ru',
|
35
|
-
'console',
|
36
|
-
'Gemfile',
|
37
|
-
'Rakefile',
|
38
|
-
'README.md'
|
39
|
-
]
|
40
|
-
end
|
41
|
-
|
42
|
-
def create_files!
|
43
|
-
@files.each do |file|
|
44
|
-
create_file_with_template(file)
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
def create_file_with_template(file)
|
49
|
-
template_file = [@template_path, file].join('/')
|
50
|
-
new_file = [@app_name, file.gsub(/.tpl$/, '')].join('/')
|
51
|
-
|
52
|
-
FileUtils.mkdir_p(File.dirname(new_file))
|
53
|
-
|
54
|
-
if File.exists?(template_file)
|
55
|
-
file_content = File.read(template_file)
|
56
|
-
|
57
|
-
# replace template variables
|
58
|
-
file_content.gsub!(/{{app_name}}/, @app_name)
|
59
|
-
File.open(new_file, 'w') { |f| f.write(file_content) }
|
60
|
-
else
|
61
|
-
FileUtils.touch(new_file)
|
62
|
-
end
|
63
|
-
|
64
|
-
STDOUT.write "Creating File: #{new_file}\n"
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|