lecter 0.1.3 → 0.2.0
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.
- checksums.yaml +4 -4
- data/.all-contributorsrc +26 -0
- data/.circleci/config.yml +86 -0
- data/.github/ISSUE_TEMPLATE/bug_report.md +27 -0
- data/.github/ISSUE_TEMPLATE/feature_request.md +20 -0
- data/.github/PULL_REQUEST_TEMPLATE.md +16 -0
- data/.gitignore +2 -0
- data/.rubocop.yml +25 -0
- data/CHANGELOG.md +20 -0
- data/CONTRIBUTING.md +35 -0
- data/Gemfile +3 -2
- data/Gemfile.lock +37 -69
- data/LICENSE.txt +1 -1
- data/README.md +160 -35
- data/Rakefile +5 -3
- data/app/controllers/lecter/diagnosis_controller.rb +40 -54
- data/app/views/layouts/lecter.html.erb +258 -0
- data/app/views/lecter/diagnosis/new.html.erb +61 -0
- data/app/views/lecter/diagnosis/show.html.erb +54 -0
- data/bin/console +1 -0
- data/bin/rails +16 -0
- data/config/locales/en.yml +16 -0
- data/config/locales/ru.yml +16 -0
- data/config/routes.rb +7 -0
- data/lecter.gemspec +9 -5
- data/lib/lecter/engine.rb +7 -0
- data/lib/lecter/formatter_headers.rb +26 -0
- data/lib/lecter/formatter_payload.rb +35 -0
- data/lib/lecter/html_generator.rb +66 -0
- data/lib/lecter/html_row.rb +42 -0
- data/lib/lecter/rack.rb +32 -31
- data/lib/lecter/railtie.rb +9 -0
- data/lib/lecter/requester.rb +63 -0
- data/lib/lecter/trace_point.rb +30 -0
- data/lib/lecter/version.rb +3 -1
- data/lib/lecter.rb +15 -12
- metadata +50 -23
- data/.idea/encodings.xml +0 -6
- data/.idea/lecter.iml +0 -52
- data/.idea/misc.xml +0 -7
- data/.idea/modules.xml +0 -8
- data/.idea/workspace.xml +0 -857
- data/.travis.yml +0 -7
- data/app/assets/javascripts/highlight.pack.js +0 -2
- data/app/assets/stylesheets/railscasts.css +0 -106
- data/app/views/lecter/diagnosis/new.erb +0 -18
- data/app/views/lecter/diagnosis/show.slim +0 -56
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'json'
|
4
|
+
|
5
|
+
module Lecter
|
6
|
+
class FormatterPayload
|
7
|
+
WRONG_PARAMETERS_MSG = 'Wrong parameters'
|
8
|
+
attr_reader :result, :error_message
|
9
|
+
|
10
|
+
def initialize(payload)
|
11
|
+
@dirty_payload = payload
|
12
|
+
end
|
13
|
+
|
14
|
+
def call
|
15
|
+
@result = json_parse(dirty_payload).merge(lecter_enabled_parameter)
|
16
|
+
rescue JSON::ParserError
|
17
|
+
@error_message = WRONG_PARAMETERS_MSG
|
18
|
+
false
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
attr_accessor :dirty_payload
|
24
|
+
|
25
|
+
def json_parse(string)
|
26
|
+
string = '{' + string + '}' unless string.match(/\A{.*}\z/)
|
27
|
+
string.gsub!('=>', ':')&.gsub!(/(“|”)/, '"')
|
28
|
+
JSON.parse(string)
|
29
|
+
end
|
30
|
+
|
31
|
+
def lecter_enabled_parameter
|
32
|
+
{ lecter_enabled: true }
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lecter
|
4
|
+
class HtmlGenerator
|
5
|
+
COUNT_LINES_AROUND_RUNNING_ROW = 5
|
6
|
+
ELLIPSIS = '...'
|
7
|
+
NEW_LINE = "\n"
|
8
|
+
|
9
|
+
def initialize(data)
|
10
|
+
@data = data
|
11
|
+
end
|
12
|
+
|
13
|
+
def call
|
14
|
+
@data.each.map do |item|
|
15
|
+
@file_path = item.keys.first
|
16
|
+
@executable_row_numbers = item.values.flatten
|
17
|
+
previous_row_is_empty = false
|
18
|
+
|
19
|
+
html_rows = file_context.each_with_index.map do |file_row, file_row_index|
|
20
|
+
@file_row_index = file_row_index
|
21
|
+
row_executable = executable_row_numbers.include?(file_row_index + 1)
|
22
|
+
|
23
|
+
if row_executable || file_row_in_showing_range?(file_row_index)
|
24
|
+
previous_row_is_empty = false
|
25
|
+
Lecter::HtmlRow.new(
|
26
|
+
file_row,
|
27
|
+
file_row_index + 1,
|
28
|
+
row_executable,
|
29
|
+
executable_row_numbers
|
30
|
+
).create
|
31
|
+
elsif !previous_row_is_empty
|
32
|
+
previous_row_is_empty = true
|
33
|
+
ELLIPSIS + NEW_LINE
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
FileListing.new(file_path, html_rows)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
attr_accessor :executable_row_numbers, :file_row_index, :file_path
|
44
|
+
|
45
|
+
def file_row_in_showing_range?(_index)
|
46
|
+
executable_row_numbers.reduce(false) do |memo, row_number|
|
47
|
+
memo ||
|
48
|
+
(row_number - COUNT_LINES_AROUND_RUNNING_ROW - 1..
|
49
|
+
row_number + COUNT_LINES_AROUND_RUNNING_ROW - 1).include?(file_row_index)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def file_context
|
54
|
+
File.open(file_path, 'r').read.split(NEW_LINE)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
class FileListing
|
59
|
+
attr_reader :file_path, :html_rows
|
60
|
+
|
61
|
+
def initialize(file_path, html_rows)
|
62
|
+
@file_path = file_path
|
63
|
+
@html_rows = html_rows
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lecter
|
4
|
+
class HtmlRow
|
5
|
+
ARROW = '-> '
|
6
|
+
BACKGROUND_INCLUDED_ROW = '#4a4a4a'
|
7
|
+
NEW_LINE_SYMBOL = "\n"
|
8
|
+
|
9
|
+
def initialize(row, row_number, row_executable, order_of_executed_lines)
|
10
|
+
@row = row
|
11
|
+
@row_number = row_number
|
12
|
+
@row_executable = row_executable
|
13
|
+
@order_of_executed_lines = order_of_executed_lines
|
14
|
+
end
|
15
|
+
|
16
|
+
def create
|
17
|
+
"<div style='#{style}'><code>#{html_row}</code></div>"
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
attr_reader :row, :row_number, :row_executable, :order_of_executed_lines
|
23
|
+
|
24
|
+
def html_row
|
25
|
+
[row_number, row, row_calling_order_number].join(' ') + NEW_LINE_SYMBOL
|
26
|
+
end
|
27
|
+
|
28
|
+
def row_calling_order_number
|
29
|
+
return unless row_executable
|
30
|
+
|
31
|
+
ARROW + order_of_executed_lines
|
32
|
+
.each_with_index
|
33
|
+
.select { |_, index| order_of_executed_lines[index] == row_number }
|
34
|
+
.map { |_, index| index + 1 }
|
35
|
+
.join(', ')
|
36
|
+
end
|
37
|
+
|
38
|
+
def style
|
39
|
+
row_executable ? "background-color: #{BACKGROUND_INCLUDED_ROW};" : nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
data/lib/lecter/rack.rb
CHANGED
@@ -1,38 +1,39 @@
|
|
1
|
-
|
2
|
-
def initialize(app)
|
3
|
-
@app = app
|
4
|
-
end
|
1
|
+
# frozen_string_literal: true
|
5
2
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
if tp.path &&
|
13
|
-
!tp.path.include?('/app/views') &&
|
14
|
-
!tp.path.include?('/app/helpers') &&
|
15
|
-
tp.path.include?(Rails.root.to_s) &&
|
16
|
-
tp.method_id != :method_added &&
|
17
|
-
tp.defined_class != Module &&
|
18
|
-
tp.defined_class != Class &&
|
19
|
-
tp.defined_class != String &&
|
20
|
-
tp.defined_class != Kernel &&
|
21
|
-
tp.defined_class != NilClass
|
3
|
+
module Lecter
|
4
|
+
class Rack
|
5
|
+
def initialize(app)
|
6
|
+
@app = app
|
7
|
+
@tp = Lecter::TracePoint.new.build
|
8
|
+
end
|
22
9
|
|
23
|
-
|
24
|
-
|
10
|
+
def call(env)
|
11
|
+
if ::Rack::Request.new(env).params['lecter_enabled']
|
12
|
+
thread = Thread.current
|
13
|
+
thread[:items] = ''
|
14
|
+
tp.enable
|
15
|
+
ActionController::Base.allow_forgery_protection = false
|
16
|
+
end
|
17
|
+
|
18
|
+
status, headers, response = @app.call(env)
|
19
|
+
|
20
|
+
if tp.enabled?
|
21
|
+
response = [status.to_s + thread[:items]]
|
22
|
+
status = 200
|
23
|
+
headers = {}
|
24
|
+
end
|
25
|
+
|
26
|
+
[status, headers, response]
|
27
|
+
ensure
|
28
|
+
if tp.enabled?
|
29
|
+
tp.disable
|
30
|
+
ActionController::Base.allow_forgery_protection = true
|
31
|
+
Thread.current[:items] = nil
|
25
32
|
end
|
26
|
-
tp.enable
|
27
|
-
end
|
28
|
-
status, headers, response = @app.call(env)
|
29
|
-
if tp
|
30
|
-
status = 200
|
31
|
-
response = [thread[:items]]
|
32
33
|
end
|
33
34
|
|
34
|
-
|
35
|
-
|
36
|
-
|
35
|
+
private
|
36
|
+
|
37
|
+
attr_reader :tp
|
37
38
|
end
|
38
39
|
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lecter
|
4
|
+
class Requester
|
5
|
+
WRONG_URL_MSG = 'Wrong url'
|
6
|
+
|
7
|
+
attr_reader :lines, :error_message
|
8
|
+
|
9
|
+
def initialize(params)
|
10
|
+
@method = params[:method]
|
11
|
+
@url = params[:url]
|
12
|
+
@payload = params[:payload]
|
13
|
+
@lines = []
|
14
|
+
@headers = params[:headers]
|
15
|
+
end
|
16
|
+
|
17
|
+
def call
|
18
|
+
return false unless response
|
19
|
+
|
20
|
+
prepare_lines
|
21
|
+
rescue URI::InvalidURIError
|
22
|
+
@error_message = WRONG_URL_MSG
|
23
|
+
false
|
24
|
+
rescue RestClient::ExceptionWithResponse => e
|
25
|
+
@error_message = e.message
|
26
|
+
false
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
attr_accessor :method, :url, :payload, :headers
|
32
|
+
|
33
|
+
def prepare_lines
|
34
|
+
items.each do |item|
|
35
|
+
file, line_number = item.split(' ')
|
36
|
+
line_number = line_number.to_i
|
37
|
+
|
38
|
+
if line_belongs_to_last?(file)
|
39
|
+
lines.last[file] = lines.last[file] << line_number
|
40
|
+
else
|
41
|
+
lines << { file.to_s => [line_number] }
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def response
|
47
|
+
@response ||= RestClient::Request.execute(
|
48
|
+
method: method,
|
49
|
+
url: url,
|
50
|
+
payload: payload,
|
51
|
+
headers: headers
|
52
|
+
)
|
53
|
+
end
|
54
|
+
|
55
|
+
def items
|
56
|
+
@items ||= response.body[3..-1].split(';')
|
57
|
+
end
|
58
|
+
|
59
|
+
def line_belongs_to_last?(file)
|
60
|
+
lines.last.is_a?(Hash) && lines.last.keys.first.to_s == file
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lecter
|
4
|
+
class TracePoint
|
5
|
+
def build
|
6
|
+
tp = ::TracePoint.new(:line, :class, :call, :c_call, :return) do |trace_point|
|
7
|
+
if trace_point.path&.exclude?('/app/views') &&
|
8
|
+
trace_point.path&.exclude?('/app/helpers') &&
|
9
|
+
trace_point.path&.include?(Rails.root.to_s) &&
|
10
|
+
trace_point.method_id != :method_added &&
|
11
|
+
trace_point.defined_class != Module &&
|
12
|
+
trace_point.defined_class != Class &&
|
13
|
+
trace_point.defined_class != String &&
|
14
|
+
trace_point.defined_class != Kernel &&
|
15
|
+
trace_point.defined_class != NilClass
|
16
|
+
|
17
|
+
Thread.current[:items] += [
|
18
|
+
trace_point.path,
|
19
|
+
trace_point.lineno,
|
20
|
+
trace_point.defined_class,
|
21
|
+
trace_point.method_id,
|
22
|
+
trace_point.event
|
23
|
+
].join(' ') + ';'
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
tp
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
data/lib/lecter/version.rb
CHANGED
data/lib/lecter.rb
CHANGED
@@ -1,16 +1,19 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
require 'lecter/engine' if defined?(Rails::Engine)
|
4
|
+
require 'lecter/formatter_payload'
|
5
|
+
require 'lecter/html_generator'
|
6
|
+
require 'lecter/html_row'
|
7
|
+
require 'lecter/rack'
|
8
|
+
require 'lecter/railtie' if defined?(Rails::Railtie)
|
9
|
+
require 'lecter/requester'
|
10
|
+
require 'lecter/version'
|
11
|
+
require 'lecter/trace_point'
|
12
|
+
require 'lecter/formatter_headers'
|
6
13
|
|
7
|
-
|
14
|
+
require 'rest-client'
|
8
15
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
app.middleware.use Lecter::Rack
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
+
module Lecter
|
17
|
+
AVAILABLE_METHODS = %w[GET POST PUT PATCH DELETE].freeze
|
18
|
+
DEFAULT_METHOD = 'GET'
|
16
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lecter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neodelf
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '13.0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '13.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rspec
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -53,13 +53,13 @@ dependencies:
|
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '3.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: rubocop
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: '0'
|
62
|
-
type: :
|
62
|
+
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
@@ -80,37 +80,65 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '0'
|
83
|
-
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: simplecov
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.17.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.17.1
|
97
|
+
description: The main purpose of that gem is helping developers to understand which
|
98
|
+
code executes by request.<br>
|
84
99
|
email:
|
85
100
|
- neodelf@gmail.com
|
86
101
|
executables: []
|
87
102
|
extensions: []
|
88
103
|
extra_rdoc_files: []
|
89
104
|
files:
|
105
|
+
- ".all-contributorsrc"
|
106
|
+
- ".circleci/config.yml"
|
107
|
+
- ".github/ISSUE_TEMPLATE/bug_report.md"
|
108
|
+
- ".github/ISSUE_TEMPLATE/feature_request.md"
|
109
|
+
- ".github/PULL_REQUEST_TEMPLATE.md"
|
90
110
|
- ".gitignore"
|
91
|
-
- ".idea/encodings.xml"
|
92
|
-
- ".idea/lecter.iml"
|
93
|
-
- ".idea/misc.xml"
|
94
|
-
- ".idea/modules.xml"
|
95
|
-
- ".idea/workspace.xml"
|
96
111
|
- ".rspec"
|
97
|
-
- ".
|
112
|
+
- ".rubocop.yml"
|
113
|
+
- CHANGELOG.md
|
98
114
|
- CODE_OF_CONDUCT.md
|
115
|
+
- CONTRIBUTING.md
|
99
116
|
- Gemfile
|
100
117
|
- Gemfile.lock
|
101
118
|
- LICENSE.txt
|
102
119
|
- README.md
|
103
120
|
- Rakefile
|
104
|
-
- app/assets/javascripts/highlight.pack.js
|
105
|
-
- app/assets/stylesheets/railscasts.css
|
106
121
|
- app/controllers/lecter/diagnosis_controller.rb
|
107
|
-
- app/views/lecter
|
108
|
-
- app/views/lecter/diagnosis/
|
122
|
+
- app/views/layouts/lecter.html.erb
|
123
|
+
- app/views/lecter/diagnosis/new.html.erb
|
124
|
+
- app/views/lecter/diagnosis/show.html.erb
|
109
125
|
- bin/console
|
126
|
+
- bin/rails
|
110
127
|
- bin/setup
|
128
|
+
- config/locales/en.yml
|
129
|
+
- config/locales/ru.yml
|
130
|
+
- config/routes.rb
|
111
131
|
- lecter.gemspec
|
112
132
|
- lib/lecter.rb
|
133
|
+
- lib/lecter/engine.rb
|
134
|
+
- lib/lecter/formatter_headers.rb
|
135
|
+
- lib/lecter/formatter_payload.rb
|
136
|
+
- lib/lecter/html_generator.rb
|
137
|
+
- lib/lecter/html_row.rb
|
113
138
|
- lib/lecter/rack.rb
|
139
|
+
- lib/lecter/railtie.rb
|
140
|
+
- lib/lecter/requester.rb
|
141
|
+
- lib/lecter/trace_point.rb
|
114
142
|
- lib/lecter/version.rb
|
115
143
|
homepage: https://github.com/neodelf/lecter
|
116
144
|
licenses:
|
@@ -118,7 +146,7 @@ licenses:
|
|
118
146
|
metadata:
|
119
147
|
allowed_push_host: https://rubygems.org
|
120
148
|
homepage_uri: https://github.com/neodelf/lecter
|
121
|
-
post_install_message:
|
149
|
+
post_install_message:
|
122
150
|
rdoc_options: []
|
123
151
|
require_paths:
|
124
152
|
- lib
|
@@ -133,9 +161,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
161
|
- !ruby/object:Gem::Version
|
134
162
|
version: '0'
|
135
163
|
requirements: []
|
136
|
-
|
137
|
-
|
138
|
-
signing_key:
|
164
|
+
rubygems_version: 3.0.8
|
165
|
+
signing_key:
|
139
166
|
specification_version: 4
|
140
|
-
summary:
|
167
|
+
summary: Show executable code by request.
|
141
168
|
test_files: []
|
data/.idea/encodings.xml
DELETED
data/.idea/lecter.iml
DELETED
@@ -1,52 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<module type="RUBY_MODULE" version="4">
|
3
|
-
<component name="ModuleRunConfigurationManager">
|
4
|
-
<shared />
|
5
|
-
</component>
|
6
|
-
<component name="NewModuleRootManager">
|
7
|
-
<content url="file://$MODULE_DIR$" />
|
8
|
-
<orderEntry type="jdk" jdkName="RVM: ruby-2.5.5" jdkType="RUBY_SDK" />
|
9
|
-
<orderEntry type="sourceFolder" forTests="false" />
|
10
|
-
<orderEntry type="library" scope="PROVIDED" name="actionpack (v5.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
11
|
-
<orderEntry type="library" scope="PROVIDED" name="actionview (v5.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
12
|
-
<orderEntry type="library" scope="PROVIDED" name="activesupport (v5.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
13
|
-
<orderEntry type="library" scope="PROVIDED" name="builder (v3.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
14
|
-
<orderEntry type="library" scope="PROVIDED" name="bundler (v2.0.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
15
|
-
<orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.5, RVM: ruby-2.5.5) [gem]" level="application" />
|
16
|
-
<orderEntry type="library" scope="PROVIDED" name="crass (v1.0.4, RVM: ruby-2.5.5) [gem]" level="application" />
|
17
|
-
<orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
18
|
-
<orderEntry type="library" scope="PROVIDED" name="domain_name (v0.5.20190701, RVM: ruby-2.5.5) [gem]" level="application" />
|
19
|
-
<orderEntry type="library" scope="PROVIDED" name="erubi (v1.8.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
20
|
-
<orderEntry type="library" scope="PROVIDED" name="http-cookie (v1.0.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
21
|
-
<orderEntry type="library" scope="PROVIDED" name="i18n (v1.6.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
22
|
-
<orderEntry type="library" scope="PROVIDED" name="loofah (v2.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
23
|
-
<orderEntry type="library" scope="PROVIDED" name="method_source (v0.9.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
24
|
-
<orderEntry type="library" scope="PROVIDED" name="mime-types (v3.2.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
25
|
-
<orderEntry type="library" scope="PROVIDED" name="mime-types-data (v3.2019.0331, RVM: ruby-2.5.5) [gem]" level="application" />
|
26
|
-
<orderEntry type="library" scope="PROVIDED" name="mini_portile2 (v2.4.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
27
|
-
<orderEntry type="library" scope="PROVIDED" name="minitest (v5.11.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
28
|
-
<orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
29
|
-
<orderEntry type="library" scope="PROVIDED" name="nokogiri (v1.10.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
30
|
-
<orderEntry type="library" scope="PROVIDED" name="rack (v2.0.7, RVM: ruby-2.5.5) [gem]" level="application" />
|
31
|
-
<orderEntry type="library" scope="PROVIDED" name="rack-test (v1.1.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
32
|
-
<orderEntry type="library" scope="PROVIDED" name="rails-dom-testing (v2.0.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
33
|
-
<orderEntry type="library" scope="PROVIDED" name="rails-html-sanitizer (v1.0.4, RVM: ruby-2.5.5) [gem]" level="application" />
|
34
|
-
<orderEntry type="library" scope="PROVIDED" name="railties (v5.2.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
35
|
-
<orderEntry type="library" scope="PROVIDED" name="rake (v10.5.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
36
|
-
<orderEntry type="library" scope="PROVIDED" name="rest-client (v2.0.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
37
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec (v3.8.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
38
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.8.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
39
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.8.4, RVM: ruby-2.5.5) [gem]" level="application" />
|
40
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.8.1, RVM: ruby-2.5.5) [gem]" level="application" />
|
41
|
-
<orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.8.2, RVM: ruby-2.5.5) [gem]" level="application" />
|
42
|
-
<orderEntry type="library" scope="PROVIDED" name="slim (v4.0.1, RVM: ruby-2.5.5) [gem]" level="application" />
|
43
|
-
<orderEntry type="library" scope="PROVIDED" name="slim-rails (v3.2.0, RVM: ruby-2.5.5) [gem]" level="application" />
|
44
|
-
<orderEntry type="library" scope="PROVIDED" name="temple (v0.8.1, RVM: ruby-2.5.5) [gem]" level="application" />
|
45
|
-
<orderEntry type="library" scope="PROVIDED" name="thor (v0.20.3, RVM: ruby-2.5.5) [gem]" level="application" />
|
46
|
-
<orderEntry type="library" scope="PROVIDED" name="thread_safe (v0.3.6, RVM: ruby-2.5.5) [gem]" level="application" />
|
47
|
-
<orderEntry type="library" scope="PROVIDED" name="tilt (v2.0.9, RVM: ruby-2.5.5) [gem]" level="application" />
|
48
|
-
<orderEntry type="library" scope="PROVIDED" name="tzinfo (v1.2.5, RVM: ruby-2.5.5) [gem]" level="application" />
|
49
|
-
<orderEntry type="library" scope="PROVIDED" name="unf (v0.1.4, RVM: ruby-2.5.5) [gem]" level="application" />
|
50
|
-
<orderEntry type="library" scope="PROVIDED" name="unf_ext (v0.0.7.6, RVM: ruby-2.5.5) [gem]" level="application" />
|
51
|
-
</component>
|
52
|
-
</module>
|
data/.idea/misc.xml
DELETED
@@ -1,7 +0,0 @@
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
-
<project version="4">
|
3
|
-
<component name="JavaScriptSettings">
|
4
|
-
<option name="languageLevel" value="ES6" />
|
5
|
-
</component>
|
6
|
-
<component name="ProjectRootManager" version="2" project-jdk-name="RVM: ruby-2.5.1" project-jdk-type="RUBY_SDK" />
|
7
|
-
</project>
|
data/.idea/modules.xml
DELETED