pig-ci-rails 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rubocop.yml +24 -0
- data/.travis.yml +21 -0
- data/CHANGELOG.md +5 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +6 -0
- data/LICENSE +21 -0
- data/README.md +124 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/config/locales/pig_ci/en.yml +43 -0
- data/lib/pig_ci.rb +146 -0
- data/lib/pig_ci/api.rb +14 -0
- data/lib/pig_ci/api/reports.rb +36 -0
- data/lib/pig_ci/decorator.rb +9 -0
- data/lib/pig_ci/decorator/report_terminal_decorator.rb +19 -0
- data/lib/pig_ci/metric.rb +4 -0
- data/lib/pig_ci/metric/current.rb +30 -0
- data/lib/pig_ci/metric/historial/change_percentage.rb +37 -0
- data/lib/pig_ci/metric/historical.rb +52 -0
- data/lib/pig_ci/profiler.rb +41 -0
- data/lib/pig_ci/profiler/database_request.rb +5 -0
- data/lib/pig_ci/profiler/memory.rb +16 -0
- data/lib/pig_ci/profiler/request_time.rb +17 -0
- data/lib/pig_ci/profiler_engine.rb +40 -0
- data/lib/pig_ci/profiler_engine/rails.rb +61 -0
- data/lib/pig_ci/report.rb +64 -0
- data/lib/pig_ci/report/database_request.rb +2 -0
- data/lib/pig_ci/report/memory.rb +15 -0
- data/lib/pig_ci/report/request_time.rb +2 -0
- data/lib/pig_ci/summary.rb +4 -0
- data/lib/pig_ci/summary/html.rb +49 -0
- data/lib/pig_ci/summary/terminal.rb +30 -0
- data/lib/pig_ci/version.rb +3 -0
- data/lib/pig_ci/views/index.erb +70 -0
- data/lib/pig_ci/views/report.erb +30 -0
- data/pig_ci.gemspec +47 -0
- data/public/assets/application.css +3 -0
- data/public/assets/application.js +109 -0
- metadata +266 -0
@@ -0,0 +1,15 @@
|
|
1
|
+
class PigCI::Report::Memory < PigCI::Report
|
2
|
+
def self.format_row(_unformatted_row)
|
3
|
+
row = super
|
4
|
+
row[:max] = (row[:max] / bytes_in_a_megabyte).round(PigCI.report_memory_precision)
|
5
|
+
row[:min] = (row[:min] / bytes_in_a_megabyte).round(PigCI.report_memory_precision)
|
6
|
+
row[:mean] = (row[:mean] / bytes_in_a_megabyte).round(PigCI.report_memory_precision)
|
7
|
+
row[:total] = (row[:total] / bytes_in_a_megabyte).round(PigCI.report_memory_precision)
|
8
|
+
|
9
|
+
row
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.bytes_in_a_megabyte
|
13
|
+
@bytes_in_a_megabyte ||= BigDecimal(1_048_576)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# This will make human friendly HTML report for developers to compare runs locally.
|
2
|
+
# It aims to save to the project root in /pig-ci.
|
3
|
+
# It is inspired by https://github.com/colszowka/simplecov-html
|
4
|
+
|
5
|
+
require 'erb'
|
6
|
+
|
7
|
+
class PigCI::Summary::HTML < PigCI::Summary
|
8
|
+
def initialize(reports:)
|
9
|
+
@reports = reports
|
10
|
+
end
|
11
|
+
|
12
|
+
def save!
|
13
|
+
copy_assets!
|
14
|
+
File.write(index_file_path, template('index').result(binding))
|
15
|
+
|
16
|
+
puts I18n.t('pig_ci.summary.saved_successfully', output_directory: PigCI.output_directory)
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def render_report(report)
|
22
|
+
template('report').result(binding)
|
23
|
+
end
|
24
|
+
|
25
|
+
def timestamps
|
26
|
+
@reports.first.timestamps
|
27
|
+
end
|
28
|
+
|
29
|
+
def template(name)
|
30
|
+
ERB.new(File.read(File.join(File.dirname(__FILE__), '../views', "#{name}.erb")))
|
31
|
+
end
|
32
|
+
|
33
|
+
def index_file_path
|
34
|
+
PigCI.output_directory.join('index.html')
|
35
|
+
end
|
36
|
+
|
37
|
+
def copy_assets!
|
38
|
+
Dir.mkdir(output_assets_directory) unless File.exist?(output_assets_directory)
|
39
|
+
FileUtils.copy_entry(assets_directory, output_assets_directory)
|
40
|
+
end
|
41
|
+
|
42
|
+
def output_assets_directory
|
43
|
+
PigCI.output_directory.join('assets')
|
44
|
+
end
|
45
|
+
|
46
|
+
def assets_directory
|
47
|
+
File.join(File.dirname(__FILE__), '../../../public/assets')
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
class PigCI::Summary::Terminal < PigCI::Summary
|
4
|
+
def initialize(reports:)
|
5
|
+
@reports = reports
|
6
|
+
@timestamp = PigCI.run_timestamp
|
7
|
+
end
|
8
|
+
|
9
|
+
def print!
|
10
|
+
@reports.each do |report|
|
11
|
+
print_report(report)
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
private
|
16
|
+
|
17
|
+
def print_report(report)
|
18
|
+
puts "#{report.i18n_name}:\n"
|
19
|
+
|
20
|
+
table = ::Terminal::Table.new headings: report.headings do |t|
|
21
|
+
report.sorted_and_formatted_data_for(@timestamp)[0..PigCI.terminal_report_row_limit]
|
22
|
+
.collect { |data| PigCI::Decorator::ReportTerminalDecorator.new(data) }
|
23
|
+
.each do |data|
|
24
|
+
t << report.column_keys.collect { |key| data.send(key) }
|
25
|
+
end
|
26
|
+
end
|
27
|
+
puts table
|
28
|
+
puts "\n"
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
7
|
+
<title>PigCI Results</title>
|
8
|
+
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
|
9
|
+
<link rel="stylesheet" href="assets/application.css">
|
10
|
+
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
11
|
+
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
|
12
|
+
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
|
13
|
+
</head>
|
14
|
+
<body>
|
15
|
+
|
16
|
+
<div class="container">
|
17
|
+
<header class="py-3">
|
18
|
+
<div class="row">
|
19
|
+
<div class="col-6">
|
20
|
+
<a href="https://pigci.com/" target="_blank" rel="noopener">
|
21
|
+
<img src="https://cdn.pigci.com/logos/pig-ci.svg" class="float-left mr-4" alt="PigCI Logo" />
|
22
|
+
</a>
|
23
|
+
<h1><%= I18n.t('.pig_ci.summary.title') %></h1>
|
24
|
+
</div>
|
25
|
+
<div class="col">
|
26
|
+
<div class="dropdown float-right">
|
27
|
+
<a class="btn btn-primary dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
28
|
+
<%= I18n.t('.pig_ci.summary.view_historic_reports') %>
|
29
|
+
</a>
|
30
|
+
<div class="dropdown-menu" aria-labelledby="navbarDropdown">
|
31
|
+
<form class="inline-form">
|
32
|
+
<% timestamps.each_with_index do |timestamp, index| %>
|
33
|
+
<label class="dropdown-item form-check form-check-label" data-toggle="collapse" data-target=".timestamp-<%= timestamp %>" aria-expanded="<%= index.zero? ? 'true' : 'false' %>">
|
34
|
+
<input type="checkbox" class="form-check-input" id="collapseHistoricReport<%= timestamp %>" <%= 'checked="checked"' if index.zero? %>>
|
35
|
+
<%= Time.at(timestamp.to_s.to_i) %>
|
36
|
+
</label>
|
37
|
+
<% end %>
|
38
|
+
</form>
|
39
|
+
</div>
|
40
|
+
</div>
|
41
|
+
</div>
|
42
|
+
</div>
|
43
|
+
</header>
|
44
|
+
|
45
|
+
<div data-pig-ci-results class="mt-4">
|
46
|
+
<ul class="nav nav-tabs" role="tablist">
|
47
|
+
<% @reports.each_with_index do |report, index| %>
|
48
|
+
<li class="nav-item">
|
49
|
+
<a class="nav-link <%= 'active' if index.zero? %>" data-toggle="tab" href="#<%= report.i18n_key %>" role="tab" aria-controls="<%= report.i18n_key %>-tab" aria-selected="<%= index.zero? ? 'true' : 'false' %>"><%= report.i18n_name %></a>
|
50
|
+
</li>
|
51
|
+
<% end %>
|
52
|
+
</ul>
|
53
|
+
|
54
|
+
<article>
|
55
|
+
<div class="tab-content mt-4">
|
56
|
+
<% @reports.each_with_index do |report, index| %>
|
57
|
+
<section class="tab-pane fade <%= 'show active' if index.zero? %>" id="<%= report.i18n_key %>" role="tabpanel" aria-labelledby="<%= report.i18n_key %>-tab">
|
58
|
+
<%= render_report(report) %>
|
59
|
+
</section>
|
60
|
+
<% end %>
|
61
|
+
</div>
|
62
|
+
</article>
|
63
|
+
</div>
|
64
|
+
|
65
|
+
<footer class="mt-3 py-3 text-muted text-small">
|
66
|
+
<%= I18n.t('.pig_ci.summary.footer_html', generated_at: Time.now.utc) %>
|
67
|
+
</footer>
|
68
|
+
</div>
|
69
|
+
</body>
|
70
|
+
</html>
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<div data-profiler="<%= report.i18n_key %>">
|
2
|
+
<h2 class="sr-only"><%= report.i18n_name %></h2>
|
3
|
+
|
4
|
+
<% report.historical_data.each_with_index do |(timestamp, historic_data), index| %>
|
5
|
+
<div class="collapse <%= 'show' if index.zero? %> timestamp-<%= timestamp %>">
|
6
|
+
<h3 class="h5 text-muted"><%= Time.at(timestamp.to_s.to_i) %></h3>
|
7
|
+
|
8
|
+
<div class="table-responsive mt-2 mb-3">
|
9
|
+
<table class="table">
|
10
|
+
<thead>
|
11
|
+
<tr>
|
12
|
+
<% report.headings.each do |heading| %>
|
13
|
+
<th><%= heading %></th>
|
14
|
+
<% end %>
|
15
|
+
</tr>
|
16
|
+
</thead>
|
17
|
+
<tbody>
|
18
|
+
<% report.sorted_and_formatted_data_for(timestamp).each do |historic_row| %>
|
19
|
+
<tr>
|
20
|
+
<% report.column_keys.each do |column_key| %>
|
21
|
+
<td><%= historic_row[column_key] %></td>
|
22
|
+
<% end %>
|
23
|
+
</tr>
|
24
|
+
<% end %>
|
25
|
+
</tbody>
|
26
|
+
</table>
|
27
|
+
</div>
|
28
|
+
</div>
|
29
|
+
<% end %>
|
30
|
+
</div>
|
data/pig_ci.gemspec
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
2
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
+
require 'pig_ci/version'
|
4
|
+
|
5
|
+
Gem::Specification.new do |spec|
|
6
|
+
spec.name = 'pig-ci-rails'
|
7
|
+
spec.version = PigCI::VERSION
|
8
|
+
spec.authors = ['Mike Rogers']
|
9
|
+
spec.email = ['me@mikerogers.io']
|
10
|
+
|
11
|
+
spec.summary = 'Mintor metrics such a memory usage as part of testing'
|
12
|
+
spec.description = 'A gem for Ruby on Rails that will report key metrics (memory, request time & SQL Requests) for request & feature tests.'
|
13
|
+
spec.homepage = "https://github.com/PigCI/pig-ci-rails"
|
14
|
+
|
15
|
+
# Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
|
16
|
+
# to allow pushing to a single host or delete this section to allow pushing to any host.
|
17
|
+
if spec.respond_to?(:metadata)
|
18
|
+
spec.metadata['allowed_push_host'] = 'https://rubygems.org'
|
19
|
+
else
|
20
|
+
raise 'RubyGems 2.0 or newer is required to protect against ' \
|
21
|
+
'public gem pushes.'
|
22
|
+
end
|
23
|
+
|
24
|
+
# Specify which files should be added to the gem when it is released.
|
25
|
+
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
26
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
27
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
28
|
+
end
|
29
|
+
spec.require_paths = ['lib']
|
30
|
+
spec.required_ruby_version = '>= 2.3'
|
31
|
+
|
32
|
+
spec.add_dependency 'activesupport', '>= 4.2'
|
33
|
+
spec.add_dependency 'colorize', '>= 0.8.1'
|
34
|
+
spec.add_dependency 'get_process_mem', '~> 0.2.3'
|
35
|
+
spec.add_dependency 'httparty', '>= 0.16'
|
36
|
+
spec.add_dependency 'i18n', '>= 1.0'
|
37
|
+
spec.add_dependency 'rails', '>= 4.2.0'
|
38
|
+
spec.add_dependency 'terminal-table', '~> 1.8.0'
|
39
|
+
|
40
|
+
spec.add_development_dependency 'bundler', '~> 2.0'
|
41
|
+
spec.add_development_dependency 'rake', '~> 12.3'
|
42
|
+
spec.add_development_dependency 'webmock', '~> 3.6.0'
|
43
|
+
|
44
|
+
spec.add_development_dependency 'json-schema', '~> 2.8.1'
|
45
|
+
spec.add_development_dependency 'rspec', '~> 3.8.0'
|
46
|
+
spec.add_development_dependency 'simplecov', '~> 0.17.0'
|
47
|
+
end
|
@@ -0,0 +1,109 @@
|
|
1
|
+
class PigCIProfilers extends HTMLElement {
|
2
|
+
constructor() {
|
3
|
+
super();
|
4
|
+
this.data = JSON.parse(this.querySelector('[data-pig-ci-json]').innerText);
|
5
|
+
}
|
6
|
+
|
7
|
+
connectedCallback() {
|
8
|
+
if(this.rendered) { return; }
|
9
|
+
|
10
|
+
this.innerHTML = this._renderTable();
|
11
|
+
}
|
12
|
+
|
13
|
+
_renderTable(){
|
14
|
+
var tablesHtml = '';
|
15
|
+
|
16
|
+
for(const profiler in this.data) {
|
17
|
+
tablesHtml += `
|
18
|
+
<h2>${profiler}</h2>
|
19
|
+
<table class="table">
|
20
|
+
<thead>
|
21
|
+
<tr>
|
22
|
+
${this._renderTableHeaders(profiler)}
|
23
|
+
</tr>
|
24
|
+
</thead>
|
25
|
+
<tbody>
|
26
|
+
${this._renderTableBody(profiler)}
|
27
|
+
</tbody>
|
28
|
+
</table>
|
29
|
+
`;
|
30
|
+
}
|
31
|
+
|
32
|
+
return tablesHtml;
|
33
|
+
}
|
34
|
+
|
35
|
+
_renderTableHeaders(profiler){
|
36
|
+
return Object.keys(this.data[profiler][0]).map(function(currentValue){
|
37
|
+
return `<th>${currentValue}</th>`;
|
38
|
+
}).join('');
|
39
|
+
}
|
40
|
+
|
41
|
+
_renderTableBody(profiler){
|
42
|
+
var finalOutput = '';
|
43
|
+
|
44
|
+
for(const row in this.data[profiler]) {
|
45
|
+
finalOutput += `
|
46
|
+
<tr>
|
47
|
+
${this._renderTableRow(this.data[profiler][row])}
|
48
|
+
</tr>
|
49
|
+
`;
|
50
|
+
}
|
51
|
+
|
52
|
+
return finalOutput;
|
53
|
+
}
|
54
|
+
|
55
|
+
_renderTableRow(row){
|
56
|
+
return Object.values(row).map(function(currentValue){
|
57
|
+
return `<td>${currentValue}</td>`;
|
58
|
+
}).join('');
|
59
|
+
}
|
60
|
+
}
|
61
|
+
customElements.define('pig-ci-profilers', PigCIProfilers);
|
62
|
+
|
63
|
+
|
64
|
+
class PigCIResults extends HTMLElement {
|
65
|
+
constructor() {
|
66
|
+
super();
|
67
|
+
this.data = JSON.parse(this.querySelector('[data-pig-ci-json]').innerText);
|
68
|
+
}
|
69
|
+
|
70
|
+
connectedCallback() {
|
71
|
+
if(this.rendered) { return; }
|
72
|
+
|
73
|
+
this.innerHTML = this._renderNavTabs() + this._renderTestRun();
|
74
|
+
}
|
75
|
+
|
76
|
+
_renderNavTabs(){
|
77
|
+
var navTabs = '<ul class="nav nav-tabs mt-4" id="myTab" role="tablist">';
|
78
|
+
|
79
|
+
for(const timestamp in this.data) {
|
80
|
+
navTabs += `
|
81
|
+
<li class="nav-item">
|
82
|
+
<a class="nav-link" data-toggle="tab" href="#timestamp-${timestamp}" role="tab" aria-controls="${timestamp}">${new Date(timestamp * 1000).toLocaleString()}</a>
|
83
|
+
</li>
|
84
|
+
`;
|
85
|
+
}
|
86
|
+
navTabs += `</ul>`;
|
87
|
+
|
88
|
+
return navTabs;
|
89
|
+
}
|
90
|
+
|
91
|
+
_renderTestRun(){
|
92
|
+
var testRunHtml = '<div class="tab-content mt-3">';
|
93
|
+
|
94
|
+
for(const timestamp in this.data) {
|
95
|
+
testRunHtml += `
|
96
|
+
<div class="tab-pane fade show" id="timestamp-${timestamp}" role="tabpanel" aria-labelledby="${timestamp}-tab">
|
97
|
+
<pig-ci-profilers>
|
98
|
+
<script data-pig-ci-json type="application/json">${JSON.stringify(this.data[timestamp])}</script>
|
99
|
+
</pig-ci-profilers>
|
100
|
+
</div>
|
101
|
+
`;
|
102
|
+
}
|
103
|
+
|
104
|
+
testRunHtml += '</div>';
|
105
|
+
return testRunHtml;
|
106
|
+
}
|
107
|
+
|
108
|
+
}
|
109
|
+
customElements.define('pig-ci-results', PigCIResults);
|
metadata
ADDED
@@ -0,0 +1,266 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pig-ci-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Mike Rogers
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-07-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: colorize
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.8.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.8.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: get_process_mem
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: httparty
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.16'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.16'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: i18n
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.0'
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 4.2.0
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 4.2.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: terminal-table
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.8.0
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.8.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: bundler
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '2.0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '2.0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: rake
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - "~>"
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '12.3'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - "~>"
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '12.3'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: webmock
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - "~>"
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 3.6.0
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - "~>"
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 3.6.0
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: json-schema
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - "~>"
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 2.8.1
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - "~>"
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 2.8.1
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rspec
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - "~>"
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 3.8.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - "~>"
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 3.8.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: simplecov
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: 0.17.0
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - "~>"
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: 0.17.0
|
195
|
+
description: A gem for Ruby on Rails that will report key metrics (memory, request
|
196
|
+
time & SQL Requests) for request & feature tests.
|
197
|
+
email:
|
198
|
+
- me@mikerogers.io
|
199
|
+
executables: []
|
200
|
+
extensions: []
|
201
|
+
extra_rdoc_files: []
|
202
|
+
files:
|
203
|
+
- ".gitignore"
|
204
|
+
- ".rubocop.yml"
|
205
|
+
- ".travis.yml"
|
206
|
+
- CHANGELOG.md
|
207
|
+
- CODE_OF_CONDUCT.md
|
208
|
+
- Gemfile
|
209
|
+
- LICENSE
|
210
|
+
- README.md
|
211
|
+
- Rakefile
|
212
|
+
- bin/console
|
213
|
+
- bin/setup
|
214
|
+
- config/locales/pig_ci/en.yml
|
215
|
+
- lib/pig_ci.rb
|
216
|
+
- lib/pig_ci/api.rb
|
217
|
+
- lib/pig_ci/api/reports.rb
|
218
|
+
- lib/pig_ci/decorator.rb
|
219
|
+
- lib/pig_ci/decorator/report_terminal_decorator.rb
|
220
|
+
- lib/pig_ci/metric.rb
|
221
|
+
- lib/pig_ci/metric/current.rb
|
222
|
+
- lib/pig_ci/metric/historial/change_percentage.rb
|
223
|
+
- lib/pig_ci/metric/historical.rb
|
224
|
+
- lib/pig_ci/profiler.rb
|
225
|
+
- lib/pig_ci/profiler/database_request.rb
|
226
|
+
- lib/pig_ci/profiler/memory.rb
|
227
|
+
- lib/pig_ci/profiler/request_time.rb
|
228
|
+
- lib/pig_ci/profiler_engine.rb
|
229
|
+
- lib/pig_ci/profiler_engine/rails.rb
|
230
|
+
- lib/pig_ci/report.rb
|
231
|
+
- lib/pig_ci/report/database_request.rb
|
232
|
+
- lib/pig_ci/report/memory.rb
|
233
|
+
- lib/pig_ci/report/request_time.rb
|
234
|
+
- lib/pig_ci/summary.rb
|
235
|
+
- lib/pig_ci/summary/html.rb
|
236
|
+
- lib/pig_ci/summary/terminal.rb
|
237
|
+
- lib/pig_ci/version.rb
|
238
|
+
- lib/pig_ci/views/index.erb
|
239
|
+
- lib/pig_ci/views/report.erb
|
240
|
+
- pig_ci.gemspec
|
241
|
+
- public/assets/application.css
|
242
|
+
- public/assets/application.js
|
243
|
+
homepage: https://github.com/PigCI/pig-ci-rails
|
244
|
+
licenses: []
|
245
|
+
metadata:
|
246
|
+
allowed_push_host: https://rubygems.org
|
247
|
+
post_install_message:
|
248
|
+
rdoc_options: []
|
249
|
+
require_paths:
|
250
|
+
- lib
|
251
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
252
|
+
requirements:
|
253
|
+
- - ">="
|
254
|
+
- !ruby/object:Gem::Version
|
255
|
+
version: '2.3'
|
256
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
257
|
+
requirements:
|
258
|
+
- - ">="
|
259
|
+
- !ruby/object:Gem::Version
|
260
|
+
version: '0'
|
261
|
+
requirements: []
|
262
|
+
rubygems_version: 3.0.3
|
263
|
+
signing_key:
|
264
|
+
specification_version: 4
|
265
|
+
summary: Mintor metrics such a memory usage as part of testing
|
266
|
+
test_files: []
|