attractor 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/README.md +10 -0
- data/attractor.gemspec +2 -0
- data/lib/attractor/cli.rb +18 -0
- data/lib/attractor/reporter.rb +54 -4
- data/lib/attractor/version.rb +1 -1
- metadata +30 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f0de58545a6ef7aab553b1d35bf6141c89b0cabbb6941d8aaae17954123c318
|
4
|
+
data.tar.gz: 8d5cc1fa551799419a86ec11818f96d5dbcbe2f44d0bd5e4f2c2cb0c9f9525ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e69218d04e69b8ddb84d64c9032ce48285089d0e79d7c92e4513708cd3ec088c7d747dd955d2d53ea983a3b45d7ccca9aad29c449d1e25e2c608f9f3bcb6c65c
|
7
|
+
data.tar.gz: d273824cc41ecbc7560fe0c18b8765fe04bfad3df461d10bc3a7ab7803c02c6416d2025971d8237bcdaa53a428b6623f7e33d817593d9b38426ce053c035cb1b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -52,6 +52,16 @@ Generate a full report
|
|
52
52
|
$ --file_prefix|-p app/models
|
53
53
|
$ --watch|-w
|
54
54
|
|
55
|
+
Serve the output on http://localhost:7890
|
56
|
+
|
57
|
+
$ attractor serve
|
58
|
+
$ --file_prefix|-p app/models
|
59
|
+
$ --watch|-w
|
60
|
+
|
61
|
+
### Live Reloading
|
62
|
+
|
63
|
+
If you have `guard-livereload` (or a similar service) running on your project, you can leverage the hot reloading functionality by specifying `--watch|-w`. Attractor will then live-reload the browser window when a file watched by `guard-livereload` changes.
|
64
|
+
|
55
65
|
## Development
|
56
66
|
|
57
67
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
data/attractor.gemspec
CHANGED
@@ -38,6 +38,8 @@ Gem::Specification.new do |spec|
|
|
38
38
|
spec.add_dependency 'flog', '~> 4.0'
|
39
39
|
spec.add_dependency 'launchy'
|
40
40
|
spec.add_dependency 'listen', '~> 3.0'
|
41
|
+
spec.add_dependency 'rack'
|
42
|
+
spec.add_dependency 'rack-livereload'
|
41
43
|
spec.add_dependency 'thor'
|
42
44
|
spec.add_dependency 'tilt'
|
43
45
|
|
data/lib/attractor/cli.rb
CHANGED
@@ -36,5 +36,23 @@ module Attractor
|
|
36
36
|
end
|
37
37
|
end
|
38
38
|
end
|
39
|
+
|
40
|
+
desc 'serve', 'Serves the report on localhost'
|
41
|
+
option :format, aliases: :f, default: 'html'
|
42
|
+
option :file_prefix, aliases: :p
|
43
|
+
option :watch, aliases: :w, type: :boolean
|
44
|
+
def serve
|
45
|
+
if options[:watch]
|
46
|
+
puts 'Listening for file changes...'
|
47
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).watch
|
48
|
+
else
|
49
|
+
case options[:format]
|
50
|
+
when 'html'
|
51
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).report
|
52
|
+
else
|
53
|
+
Attractor::RackReporter.new(file_prefix: options[:file_prefix]).report
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
39
57
|
end
|
40
58
|
end
|
data/lib/attractor/reporter.rb
CHANGED
@@ -3,6 +3,8 @@
|
|
3
3
|
require 'descriptive_statistics/safe'
|
4
4
|
require 'fileutils'
|
5
5
|
require 'launchy'
|
6
|
+
require 'rack'
|
7
|
+
require 'rack/livereload'
|
6
8
|
require 'tilt'
|
7
9
|
|
8
10
|
module Attractor
|
@@ -25,6 +27,14 @@ module Attractor
|
|
25
27
|
def report
|
26
28
|
@suggestions = @suggester.suggest
|
27
29
|
end
|
30
|
+
|
31
|
+
def render
|
32
|
+
'Attractor'
|
33
|
+
end
|
34
|
+
|
35
|
+
def serve
|
36
|
+
@suggestions = @suggester.suggest
|
37
|
+
end
|
28
38
|
end
|
29
39
|
|
30
40
|
# console reporter
|
@@ -51,15 +61,55 @@ module Attractor
|
|
51
61
|
super
|
52
62
|
|
53
63
|
puts 'Generating an HTML report'
|
54
|
-
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
55
|
-
output = template.render self
|
56
64
|
|
57
65
|
FileUtils.mkdir_p './attractor_output'
|
58
66
|
|
59
|
-
File.open('./attractor_output/index.html', 'w') { |file| file.write(
|
67
|
+
File.open('./attractor_output/index.html', 'w') { |file| file.write(render) }
|
60
68
|
puts "Generated HTML report at #{File.expand_path './attractor_output/index.html'}"
|
61
69
|
|
62
|
-
Launchy.open(File.expand_path
|
70
|
+
Launchy.open(File.expand_path('./attractor_output/index.html'))
|
71
|
+
end
|
72
|
+
|
73
|
+
def render
|
74
|
+
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
75
|
+
template.render self
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
# serving the HTML locally
|
80
|
+
class RackReporter < Reporter
|
81
|
+
def report
|
82
|
+
super
|
83
|
+
|
84
|
+
app = serve_via_rack
|
85
|
+
|
86
|
+
Rack::Handler::WEBrick.run app, Port: 7890
|
87
|
+
end
|
88
|
+
|
89
|
+
def render
|
90
|
+
template = Tilt.new(File.expand_path('../templates/index.html.erb', __dir__))
|
91
|
+
template.render self
|
92
|
+
end
|
93
|
+
|
94
|
+
def watch
|
95
|
+
@suggestions = @suggester.suggest
|
96
|
+
|
97
|
+
app = serve_via_rack
|
98
|
+
|
99
|
+
Rack::Handler::WEBrick.run Rack::LiveReload.new(app), Port: 7890
|
100
|
+
end
|
101
|
+
|
102
|
+
private
|
103
|
+
|
104
|
+
def serve_via_rack
|
105
|
+
app = lambda do |_env|
|
106
|
+
[200, { 'Content-Type' => 'text/html' }, [render]]
|
107
|
+
end
|
108
|
+
|
109
|
+
puts 'Serving attractor at http://localhost:7890'
|
110
|
+
Launchy.open('http://localhost:7890')
|
111
|
+
|
112
|
+
app
|
63
113
|
end
|
64
114
|
end
|
65
115
|
end
|
data/lib/attractor/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attractor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julian Rubisch
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-09-
|
11
|
+
date: 2019-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: churn
|
@@ -80,6 +80,34 @@ dependencies:
|
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '3.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rack
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rack-livereload
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
- !ruby/object:Gem::Dependency
|
84
112
|
name: thor
|
85
113
|
requirement: !ruby/object:Gem::Requirement
|