log-analyser 0.1.2.pre.v012.20201107185736 → 0.1.3.pre.documentation.20201108193310
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/CHANGELOG +7 -1
- data/README.md +103 -31
- data/lib/pageviews.rb +15 -13
- data/lib/pageviews_log_aggregator.rb +16 -14
- data/lib/parser.rb +24 -22
- data/lib/unique_pageviews.rb +8 -6
- metadata +19 -14
- data/.ruby-version +0 -1
- data/Gemfile +0 -24
- data/Gemfile.lock +0 -117
- data/Guardfile +0 -45
- data/Rakefile +0 -16
- data/bin/setup +0 -19
- data/config/environment.rb +0 -11
- data/log-analyser.gemspec +0 -29
- data/version.rb +0 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a645c762e28326585af1cbe7f3d96e4bb46d6a72996d775692ba74c555ba6fc
|
|
4
|
+
data.tar.gz: f98bbcd840b509840304dd1f7176e484938e29e9200326b2561f9c6dcea79962
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 21314628d221eefc3a808c71847137a8c7ef06b2910085060c58c5f771012bb8950f00c677deaecf2c47e1b775ecfd395b0a57310dfe9e321c2cc73b2be72296
|
|
7
|
+
data.tar.gz: 6c0243885a4c600c13b6b58145a64102c47d9e8f661e45c477f64d5b1f535a89245bba8e8e459a62ee40380c36b6870df7db1cd6c945759aa04c14a20e0685f4
|
data/CHANGELOG
CHANGED
data/README.md
CHANGED
|
@@ -26,6 +26,8 @@ After instantiating *log-analyser's* `PageviewsLogAggregator` class with the pat
|
|
|
26
26
|
<summary>click to expand the index</summary>
|
|
27
27
|
|
|
28
28
|
- [Installation](#installation)
|
|
29
|
+
* [Gem](#gem)
|
|
30
|
+
* [Project](#project)
|
|
29
31
|
- [Usage](#usage)
|
|
30
32
|
- [Logs and Pageviews](#logs-and-pageviews)
|
|
31
33
|
* [Definitions](#definitions)
|
|
@@ -40,6 +42,8 @@ After instantiating *log-analyser's* `PageviewsLogAggregator` class with the pat
|
|
|
40
42
|
|
|
41
43
|
## Installation
|
|
42
44
|
|
|
45
|
+
### Gem
|
|
46
|
+
|
|
43
47
|
To use *log-analyser* in your application, add this line to your Gemfile:
|
|
44
48
|
|
|
45
49
|
```ruby
|
|
@@ -50,44 +54,30 @@ Or install it yourself as:
|
|
|
50
54
|
|
|
51
55
|
$ gem install log-analyser
|
|
52
56
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
```
|
|
56
|
-
...
|
|
57
|
-
...
|
|
58
|
-
...
|
|
59
|
-
...
|
|
60
|
-
...
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## Logs and Pageviews
|
|
57
|
+
#### Gem Usage
|
|
64
58
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
A pageview is defined as a view of a page on your site that is being tracked by the Analytics tracking code.
|
|
68
|
-
If a user clicks reload after reaching the page, this is counted as an additional pageview.
|
|
69
|
-
If a user navigates to a different page and then returns to the original page, a second pageview is recorded as well.
|
|
59
|
+
```ruby
|
|
60
|
+
#!/usr/bin/env ruby
|
|
70
61
|
|
|
71
|
-
|
|
72
|
-
user during the same session. A unique pageview represents the number of sessions during which that page was
|
|
73
|
-
viewed one or more times.
|
|
74
|
-
```
|
|
62
|
+
require 'pageviews_log_aggregator'
|
|
75
63
|
|
|
76
|
-
|
|
64
|
+
file_path = '/Users/dmazzei/projects/personal/ruby/sp_test/log-analyser/resources/webserver.log'
|
|
65
|
+
log_aggregator = LogAnalyser::PageviewsLogAggregator.new(file_path)
|
|
77
66
|
|
|
78
|
-
|
|
67
|
+
puts "\nAll pageviews"
|
|
68
|
+
log_aggregator.all.each do |key, value|
|
|
69
|
+
puts "#{key&.to_s&.ljust(28, '.')} | #{value}"
|
|
70
|
+
end
|
|
79
71
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
/contact 184.123.665.067
|
|
85
|
-
/home 184.123.665.067
|
|
72
|
+
puts "\nUnique pageviews"
|
|
73
|
+
log_aggregator.unique.each do |key, value|
|
|
74
|
+
puts "#{key&.to_s&.ljust(28, '.')} | #{value}"
|
|
75
|
+
end
|
|
86
76
|
```
|
|
87
77
|
|
|
88
|
-
|
|
78
|
+

|
|
89
79
|
|
|
90
|
-
|
|
80
|
+
### Project
|
|
91
81
|
|
|
92
82
|
Install the Ruby version specified in `.ruby-version` </br>
|
|
93
83
|
Clone the project and install Bundler
|
|
@@ -109,6 +99,75 @@ Run the initial setup
|
|
|
109
99
|
> $ bundle install
|
|
110
100
|
> ```
|
|
111
101
|
|
|
102
|
+
#### Usage
|
|
103
|
+
|
|
104
|
+
Call `./bin/parse_pageview_file.rb` passing a logfile path as argument, will return the pageview count ordered from most to less viewed.</br>
|
|
105
|
+
Check the script with `--help` argument for more options
|
|
106
|
+
|
|
107
|
+

|
|
108
|
+
|
|
109
|
+
An example log can be found in `resources` folder:
|
|
110
|
+
|
|
111
|
+
$ ./bin/parse_pageview_file.rb --file 'resources/webserver.log'
|
|
112
|
+
|--------------------------------------------------|
|
|
113
|
+
| All pageviews |
|
|
114
|
+
|--------------------------------------------------|
|
|
115
|
+
| /about/2.................... | 90 |
|
|
116
|
+
| /contact.................... | 89 |
|
|
117
|
+
| /index...................... | 82 |
|
|
118
|
+
| /about...................... | 81 |
|
|
119
|
+
| /help_page/1................ | 80 |
|
|
120
|
+
| /home....................... | 78 |
|
|
121
|
+
|--------------------------------------------------|
|
|
122
|
+
|
|
123
|
+
The `-u` or `--unique` option will also display the unique pageview count:
|
|
124
|
+
|
|
125
|
+
$ ./bin/parse_pageview_file.rb --file 'resources/webserver.log' -u
|
|
126
|
+
|
|
127
|
+
And any specific page can be filtered with `-p` or `--page`:
|
|
128
|
+
|
|
129
|
+
$ ./bin/parse_pageview_file.rb --file 'resources/webserver.log' -p '/index'
|
|
130
|
+
|--------------------------------------------------|
|
|
131
|
+
| View count for page: /index |
|
|
132
|
+
|--------------------------------------------------|
|
|
133
|
+
| All pageviews |
|
|
134
|
+
|--------------------------------------------------|
|
|
135
|
+
| /index...................... | 82 |
|
|
136
|
+
|--------------------------------------------------|
|
|
137
|
+
|
|
138
|
+
## Logs and Pageviews
|
|
139
|
+
|
|
140
|
+
### Definitions
|
|
141
|
+
|
|
142
|
+
> :page_facing_up: A pageview is defined as a view of a page on your site that is being tracked by the Analytics tracking code. If a user clicks reload after reaching the page, this is counted as an additional pageview. If a user navigates to a different page and then returns to the original page, a second pageview is recorded as well.
|
|
143
|
+
|
|
144
|
+
> :page_with_curl: A unique pageview, as seen in the Content Overview report, aggregates pageviews that are generated by the same user during the same session. A unique pageview represents the number of sessions during which that page was viewed one or more times.
|
|
145
|
+
|
|
146
|
+
|
|
147
|
+
### Log Formatting
|
|
148
|
+
|
|
149
|
+
The library is prepared to parser text files, containing one entry per line, in the format: `\page_name identifier`.
|
|
150
|
+
|
|
151
|
+
A space must separate the page name (first column) from the user identifier (e.g. IP address):
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
/help_page/1 126.318.035.038
|
|
155
|
+
/contact 184.123.665.067
|
|
156
|
+
/home 184.123.665.067
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Development
|
|
160
|
+
|
|
161
|
+
#### Start with the project:
|
|
162
|
+
|
|
163
|
+
```
|
|
164
|
+
$ git clone git@github.com:DMazzei/log-analyser.git
|
|
165
|
+
$ cd log-analyser
|
|
166
|
+
$ gem install bundler
|
|
167
|
+
$ bundle install
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
And the world is your oyster...
|
|
112
171
|
|
|
113
172
|
You can also run `Bundle exec console` for an interactive prompt that will allow you to experiment.
|
|
114
173
|
|
|
@@ -128,9 +187,22 @@ Use `Bundle exec rake rspec` to run the tests.
|
|
|
128
187
|
The test coverage is handled by `rspec`, `simplecov` and `coveralls`.
|
|
129
188
|
Status and coverage history can be checked [here](https://coveralls.io/github/DMazzei/log-analyser).
|
|
130
189
|
|
|
190
|
+
#### Deployment
|
|
191
|
+
|
|
192
|
+
Following the creation of a _*Pull Request*_ a CI workflow is triggered in CircleCI, that can be checked [here](https://app.circleci.com/pipelines/github/DMazzei/log-analyser).</br>
|
|
193
|
+
This workflow consist in _building_ the library; Running _rubocop_ and _rspec_ to validate integrity and code quality; And lastly generating and pushing a _feature-gem_ that can be used for development and tests.
|
|
194
|
+
|
|
195
|
+
After passing all checks and requirements on github, a *PR* can be merged as soon as it is reviewed and approved.
|
|
196
|
+
The _*master branch*_ merge process will trigger the deployment process on CircleCI, and this workflow ends with the generation of a _*tagged-gem*_.
|
|
197
|
+
|
|
198
|
+
The whole deployment process will finish by building and tagging a new gem version and pushing it to [rubygems.org](https://rubygems.org/gems/log-analyser).
|
|
199
|
+
|
|
200
|
+
> :warning: In order to merge changes into _*master branch*_, the version must be bumped up, otherwise the deployment will fail.</br>
|
|
201
|
+
> The version must be updated in `version.rb`.
|
|
202
|
+
|
|
131
203
|
## Contributing
|
|
132
204
|
|
|
133
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
|
205
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/DMazzeig/log-analyser.
|
|
134
206
|
|
|
135
207
|
## Next Steps
|
|
136
208
|
|
data/lib/pageviews.rb
CHANGED
|
@@ -1,19 +1,21 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
module LogAnalyser
|
|
4
|
+
class Pageviews
|
|
5
|
+
InvalidLogEntriesError = Class.new(StandardError)
|
|
5
6
|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
def self.for(entries = {})
|
|
8
|
+
new.generate_view_count(entries)
|
|
9
|
+
rescue StandardError
|
|
10
|
+
raise InvalidLogEntriesError
|
|
11
|
+
end
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
13
|
+
def generate_view_count(entries)
|
|
14
|
+
entries
|
|
15
|
+
.transform_values(&:size)
|
|
16
|
+
.sort_by(&:last)
|
|
17
|
+
.reverse
|
|
18
|
+
.to_h
|
|
19
|
+
end
|
|
18
20
|
end
|
|
19
21
|
end
|
|
@@ -4,24 +4,26 @@ require_relative 'parser'
|
|
|
4
4
|
require_relative 'pageviews'
|
|
5
5
|
require_relative 'unique_pageviews'
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
module LogAnalyser
|
|
8
|
+
class PageviewsLogAggregator
|
|
9
|
+
def initialize(file_path)
|
|
10
|
+
@file_path = file_path
|
|
11
|
+
end
|
|
11
12
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
def all
|
|
14
|
+
Pageviews.for(entries)
|
|
15
|
+
end
|
|
15
16
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
17
|
+
def unique
|
|
18
|
+
UniquePageviews.for(entries)
|
|
19
|
+
end
|
|
19
20
|
|
|
20
|
-
|
|
21
|
+
private
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
attr_accessor :file_path
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
def entries
|
|
26
|
+
@entries ||= Parser.call(file_path)
|
|
27
|
+
end
|
|
26
28
|
end
|
|
27
29
|
end
|
data/lib/parser.rb
CHANGED
|
@@ -1,33 +1,35 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
class
|
|
5
|
-
|
|
6
|
-
|
|
3
|
+
module LogAnalyser
|
|
4
|
+
class Parser
|
|
5
|
+
class FileNotFoundError < StandardError
|
|
6
|
+
def initialize(path)
|
|
7
|
+
super("File not found for path: [#{path}]")
|
|
8
|
+
end
|
|
7
9
|
end
|
|
8
|
-
end
|
|
9
10
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
11
|
+
def self.call(file_path)
|
|
12
|
+
new.call(file_path)
|
|
13
|
+
end
|
|
13
14
|
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
def call(file_path)
|
|
16
|
+
raise FileNotFoundError, file_path unless File.exist?(file_path)
|
|
16
17
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
data = File.open(file_path).map(&:strip)
|
|
19
|
+
data.reject!(&:empty?)
|
|
20
|
+
parse(data)
|
|
21
|
+
end
|
|
21
22
|
|
|
22
|
-
|
|
23
|
+
private
|
|
23
24
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
25
|
+
def parse(data)
|
|
26
|
+
entries = Hash.new { |h, k| h[k] = [] }
|
|
27
|
+
data.each do |entry|
|
|
28
|
+
key, value = *entry.split(/\s+/)
|
|
29
|
+
entries[key] << value
|
|
30
|
+
end
|
|
30
31
|
|
|
31
|
-
|
|
32
|
+
entries
|
|
33
|
+
end
|
|
32
34
|
end
|
|
33
35
|
end
|
data/lib/unique_pageviews.rb
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
entries
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
module LogAnalyser
|
|
4
|
+
class UniquePageviews < Pageviews
|
|
5
|
+
def generate_view_count(entries)
|
|
6
|
+
entries.transform_values { |value| value.uniq.size }
|
|
7
|
+
.sort_by(&:last)
|
|
8
|
+
.reverse
|
|
9
|
+
.to_h
|
|
10
|
+
end
|
|
9
11
|
end
|
|
10
12
|
end
|
metadata
CHANGED
|
@@ -1,45 +1,50 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: log-analyser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.1.
|
|
4
|
+
version: 0.1.3.pre.documentation.20201108193310
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Dan Mazzei
|
|
8
8
|
autorequire:
|
|
9
|
-
bindir:
|
|
9
|
+
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2020-11-
|
|
11
|
+
date: 2020-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: Log reader and data aggregator for pageviews information.
|
|
14
14
|
email:
|
|
15
15
|
- danielmazzei@gmail.com
|
|
16
16
|
executables: []
|
|
17
17
|
extensions: []
|
|
18
|
-
extra_rdoc_files:
|
|
18
|
+
extra_rdoc_files:
|
|
19
|
+
- CHANGELOG
|
|
20
|
+
- LICENSE.txt
|
|
21
|
+
- README.md
|
|
19
22
|
files:
|
|
20
|
-
- ".ruby-version"
|
|
21
23
|
- CHANGELOG
|
|
22
|
-
- Gemfile
|
|
23
|
-
- Gemfile.lock
|
|
24
|
-
- Guardfile
|
|
25
24
|
- LICENSE.txt
|
|
26
25
|
- README.md
|
|
27
|
-
- Rakefile
|
|
28
|
-
- bin/setup
|
|
29
|
-
- config/environment.rb
|
|
30
26
|
- lib/pageviews.rb
|
|
31
27
|
- lib/pageviews_log_aggregator.rb
|
|
32
28
|
- lib/parser.rb
|
|
33
29
|
- lib/unique_pageviews.rb
|
|
34
|
-
- log-analyser.gemspec
|
|
35
|
-
- version.rb
|
|
36
30
|
homepage: https://github.com/DMazzei/log-analyser
|
|
37
31
|
licenses:
|
|
38
32
|
- MIT
|
|
39
33
|
metadata:
|
|
40
34
|
homepage_uri: https://github.com/DMazzei/log-analyser
|
|
35
|
+
source_code_uri: https://github.com/DMazzei/log-analyser
|
|
36
|
+
changelog_uri: https://github.com/DMazzei/log-analyser/blob/master/CHANGELOG
|
|
37
|
+
bug_tracker_uri: https://github.com/DMazzei/log-analyser/issues
|
|
38
|
+
documentation_uri: https://www.rubydoc.info/gems/log-analyser
|
|
41
39
|
post_install_message:
|
|
42
|
-
rdoc_options:
|
|
40
|
+
rdoc_options:
|
|
41
|
+
- "--title"
|
|
42
|
+
- Emoticon - emotions in terminal
|
|
43
|
+
- "--main"
|
|
44
|
+
- README.md
|
|
45
|
+
- "--line-numbers"
|
|
46
|
+
- "--inline-source"
|
|
47
|
+
- "--quiet"
|
|
43
48
|
require_paths:
|
|
44
49
|
- lib
|
|
45
50
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/.ruby-version
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
2.7.1
|
data/Gemfile
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
source 'https://rubygems.org'
|
|
4
|
-
|
|
5
|
-
gem 'bundler'
|
|
6
|
-
gem 'rake', '~> 12.0'
|
|
7
|
-
gem 'require_all'
|
|
8
|
-
|
|
9
|
-
group :development, :test do
|
|
10
|
-
gem 'coveralls_reborn', '~> 0.18.0', require: false
|
|
11
|
-
gem 'rspec', '~> 3.8'
|
|
12
|
-
gem 'rspec_junit_formatter'
|
|
13
|
-
gem 'rubocop', require: false
|
|
14
|
-
gem 'simplecov', require: false
|
|
15
|
-
gem 'simplecov-lcov'
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
group :development do
|
|
19
|
-
gem 'guard'
|
|
20
|
-
gem 'guard-rspec'
|
|
21
|
-
gem 'pry'
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
gemspec name: 'log-analyser'
|
data/Gemfile.lock
DELETED
|
@@ -1,117 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
log-analyser (0.1.1)
|
|
5
|
-
|
|
6
|
-
GEM
|
|
7
|
-
remote: https://rubygems.org/
|
|
8
|
-
specs:
|
|
9
|
-
ast (2.4.1)
|
|
10
|
-
coderay (1.1.3)
|
|
11
|
-
coveralls_reborn (0.18.0)
|
|
12
|
-
simplecov (>= 0.18.1, < 0.20.0)
|
|
13
|
-
term-ansicolor (~> 1.6)
|
|
14
|
-
thor (>= 0.20.3, < 2.0)
|
|
15
|
-
tins (~> 1.16)
|
|
16
|
-
diff-lcs (1.4.4)
|
|
17
|
-
docile (1.3.2)
|
|
18
|
-
ffi (1.13.1)
|
|
19
|
-
formatador (0.2.5)
|
|
20
|
-
guard (2.16.2)
|
|
21
|
-
formatador (>= 0.2.4)
|
|
22
|
-
listen (>= 2.7, < 4.0)
|
|
23
|
-
lumberjack (>= 1.0.12, < 2.0)
|
|
24
|
-
nenv (~> 0.1)
|
|
25
|
-
notiffany (~> 0.0)
|
|
26
|
-
pry (>= 0.9.12)
|
|
27
|
-
shellany (~> 0.0)
|
|
28
|
-
thor (>= 0.18.1)
|
|
29
|
-
guard-compat (1.2.1)
|
|
30
|
-
guard-rspec (4.7.3)
|
|
31
|
-
guard (~> 2.1)
|
|
32
|
-
guard-compat (~> 1.1)
|
|
33
|
-
rspec (>= 2.99.0, < 4.0)
|
|
34
|
-
listen (3.2.1)
|
|
35
|
-
rb-fsevent (~> 0.10, >= 0.10.3)
|
|
36
|
-
rb-inotify (~> 0.9, >= 0.9.10)
|
|
37
|
-
lumberjack (1.2.8)
|
|
38
|
-
method_source (1.0.0)
|
|
39
|
-
nenv (0.3.0)
|
|
40
|
-
notiffany (0.1.3)
|
|
41
|
-
nenv (~> 0.1)
|
|
42
|
-
shellany (~> 0.0)
|
|
43
|
-
parallel (1.19.2)
|
|
44
|
-
parser (2.7.2.0)
|
|
45
|
-
ast (~> 2.4.1)
|
|
46
|
-
pry (0.13.1)
|
|
47
|
-
coderay (~> 1.1)
|
|
48
|
-
method_source (~> 1.0)
|
|
49
|
-
rainbow (3.0.0)
|
|
50
|
-
rake (12.3.3)
|
|
51
|
-
rb-fsevent (0.10.4)
|
|
52
|
-
rb-inotify (0.10.1)
|
|
53
|
-
ffi (~> 1.0)
|
|
54
|
-
regexp_parser (1.8.2)
|
|
55
|
-
require_all (3.0.0)
|
|
56
|
-
rexml (3.2.4)
|
|
57
|
-
rspec (3.10.0)
|
|
58
|
-
rspec-core (~> 3.10.0)
|
|
59
|
-
rspec-expectations (~> 3.10.0)
|
|
60
|
-
rspec-mocks (~> 3.10.0)
|
|
61
|
-
rspec-core (3.10.0)
|
|
62
|
-
rspec-support (~> 3.10.0)
|
|
63
|
-
rspec-expectations (3.10.0)
|
|
64
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
65
|
-
rspec-support (~> 3.10.0)
|
|
66
|
-
rspec-mocks (3.10.0)
|
|
67
|
-
diff-lcs (>= 1.2.0, < 2.0)
|
|
68
|
-
rspec-support (~> 3.10.0)
|
|
69
|
-
rspec-support (3.10.0)
|
|
70
|
-
rspec_junit_formatter (0.4.1)
|
|
71
|
-
rspec-core (>= 2, < 4, != 2.12.0)
|
|
72
|
-
rubocop (1.2.0)
|
|
73
|
-
parallel (~> 1.10)
|
|
74
|
-
parser (>= 2.7.1.5)
|
|
75
|
-
rainbow (>= 2.2.2, < 4.0)
|
|
76
|
-
regexp_parser (>= 1.8)
|
|
77
|
-
rexml
|
|
78
|
-
rubocop-ast (>= 1.0.1)
|
|
79
|
-
ruby-progressbar (~> 1.7)
|
|
80
|
-
unicode-display_width (>= 1.4.0, < 2.0)
|
|
81
|
-
rubocop-ast (1.1.1)
|
|
82
|
-
parser (>= 2.7.1.5)
|
|
83
|
-
ruby-progressbar (1.10.1)
|
|
84
|
-
shellany (0.0.1)
|
|
85
|
-
simplecov (0.19.1)
|
|
86
|
-
docile (~> 1.1)
|
|
87
|
-
simplecov-html (~> 0.11)
|
|
88
|
-
simplecov-html (0.12.3)
|
|
89
|
-
simplecov-lcov (0.8.0)
|
|
90
|
-
sync (0.5.0)
|
|
91
|
-
term-ansicolor (1.7.1)
|
|
92
|
-
tins (~> 1.0)
|
|
93
|
-
thor (1.0.1)
|
|
94
|
-
tins (1.26.0)
|
|
95
|
-
sync
|
|
96
|
-
unicode-display_width (1.7.0)
|
|
97
|
-
|
|
98
|
-
PLATFORMS
|
|
99
|
-
ruby
|
|
100
|
-
|
|
101
|
-
DEPENDENCIES
|
|
102
|
-
bundler
|
|
103
|
-
coveralls_reborn (~> 0.18.0)
|
|
104
|
-
guard
|
|
105
|
-
guard-rspec
|
|
106
|
-
log-analyser!
|
|
107
|
-
pry
|
|
108
|
-
rake (~> 12.0)
|
|
109
|
-
require_all
|
|
110
|
-
rspec (~> 3.8)
|
|
111
|
-
rspec_junit_formatter
|
|
112
|
-
rubocop
|
|
113
|
-
simplecov
|
|
114
|
-
simplecov-lcov
|
|
115
|
-
|
|
116
|
-
BUNDLED WITH
|
|
117
|
-
2.1.4
|
data/Guardfile
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
# A sample Guardfile
|
|
4
|
-
# More info at https://github.com/guard/guard#readme
|
|
5
|
-
|
|
6
|
-
## Uncomment and set this to only include directories you want to watch
|
|
7
|
-
# directories %w(app lib config test spec features) \
|
|
8
|
-
# .select{|d| Dir.exist?(d) ? d : UI.warning("Directory #{d} does not exist")}
|
|
9
|
-
|
|
10
|
-
## Note: if you are using the `directories` clause above and you are not
|
|
11
|
-
## watching the project directory ('.'), then you will want to move
|
|
12
|
-
## the Guardfile to a watched dir and symlink it back, e.g.
|
|
13
|
-
#
|
|
14
|
-
# $ mkdir config
|
|
15
|
-
# $ mv Guardfile config/
|
|
16
|
-
# $ ln -s config/Guardfile .
|
|
17
|
-
#
|
|
18
|
-
# and, you'll have to watch "config/Guardfile" instead of "Guardfile"
|
|
19
|
-
|
|
20
|
-
# Note: The cmd option is now required due to the increasing number of ways
|
|
21
|
-
# rspec may be run, below are examples of the most common uses.
|
|
22
|
-
# * bundler: 'bundle exec rspec'
|
|
23
|
-
# * bundler binstubs: 'bin/rspec'
|
|
24
|
-
# * spring: 'bin/rspec' (This will use spring if running and you have
|
|
25
|
-
# installed the spring binstubs per the docs)
|
|
26
|
-
# * zeus: 'zeus rspec' (requires the server to be started separately)
|
|
27
|
-
# * 'just' rspec: 'rspec'
|
|
28
|
-
|
|
29
|
-
guard :rspec, cmd: 'bundle exec rspec' do
|
|
30
|
-
require 'guard/rspec/dsl'
|
|
31
|
-
dsl = Guard::RSpec::Dsl.new(self)
|
|
32
|
-
|
|
33
|
-
# Feel free to open issues for suggestions and improvements
|
|
34
|
-
|
|
35
|
-
# RSpec files
|
|
36
|
-
rspec = dsl.rspec
|
|
37
|
-
watch(rspec.spec_helper) { rspec.spec_dir }
|
|
38
|
-
watch(rspec.spec_support) { rspec.spec_dir }
|
|
39
|
-
watch(rspec.spec_files)
|
|
40
|
-
watch(/^lib\/documents_analyser\/(.+)\.rb$/) { |m| "spec/#{m[1]}_spec.rb" }
|
|
41
|
-
|
|
42
|
-
# Ruby files
|
|
43
|
-
ruby = dsl.ruby
|
|
44
|
-
dsl.watch_spec_files_for(ruby.lib_files)
|
|
45
|
-
end
|
data/Rakefile
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
begin
|
|
4
|
-
require 'bundler/setup'
|
|
5
|
-
rescue LoadError
|
|
6
|
-
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
Bundler::GemHelper.install_tasks
|
|
10
|
-
|
|
11
|
-
require 'rubygems'
|
|
12
|
-
require 'rspec/core/rake_task'
|
|
13
|
-
|
|
14
|
-
RSpec::Core::RakeTask.new(:spec)
|
|
15
|
-
|
|
16
|
-
task default: :spec
|
data/bin/setup
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env ruby
|
|
2
|
-
require 'fileutils'
|
|
3
|
-
|
|
4
|
-
# path to your application root.
|
|
5
|
-
APP_ROOT = File.expand_path('..', __dir__)
|
|
6
|
-
|
|
7
|
-
def system!(*args)
|
|
8
|
-
system(*args) || abort("\n== Command #{args} failed ==")
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
FileUtils.chdir APP_ROOT do
|
|
12
|
-
# This script is a way to setup or update your development environment automatically.
|
|
13
|
-
# This script is idempotent, so that you can run it at anytime and get an expectable outcome.
|
|
14
|
-
# Add necessary setup steps to this file.
|
|
15
|
-
|
|
16
|
-
puts '== Installing dependencies =='
|
|
17
|
-
system! 'gem install bundler --conservative'
|
|
18
|
-
system('bundle check') || system!('bundle install')
|
|
19
|
-
end
|
data/config/environment.rb
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require 'bundler/setup'
|
|
4
|
-
require 'pathname'
|
|
5
|
-
require 'require_all'
|
|
6
|
-
|
|
7
|
-
APP_ROOT = Pathname.new(__dir__).parent
|
|
8
|
-
$LOAD_PATH.unshift(File.join(APP_ROOT, '/lib')) unless $LOAD_PATH.include?(File.join(APP_ROOT, '/lib'))
|
|
9
|
-
|
|
10
|
-
require './version'
|
|
11
|
-
require_all './lib'
|
data/log-analyser.gemspec
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
require_relative 'version'
|
|
4
|
-
|
|
5
|
-
Gem::Specification.new do |spec|
|
|
6
|
-
spec.name = 'log-analyser'
|
|
7
|
-
spec.version = VERSION
|
|
8
|
-
spec.authors = ['Dan Mazzei']
|
|
9
|
-
spec.email = ['danielmazzei@gmail.com']
|
|
10
|
-
|
|
11
|
-
spec.summary = 'Log reader and data aggregator for pageviews information.'
|
|
12
|
-
spec.description = 'Log reader and data aggregator for pageviews information.'
|
|
13
|
-
spec.homepage = 'https://github.com/DMazzei/log-analyser'
|
|
14
|
-
spec.license = 'MIT'
|
|
15
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 2.7')
|
|
16
|
-
|
|
17
|
-
# spec.metadata['allowed_push_host'] = "'TODO: Set to 'http://mygemserver.com''"
|
|
18
|
-
|
|
19
|
-
spec.metadata['homepage_uri'] = spec.homepage
|
|
20
|
-
# spec.metadata['source_code_uri'] = "'TODO: Put your gem's public repo URL here.'"
|
|
21
|
-
# spec.metadata['changelog_uri'] = "'TODO: Put your gem's CHANGELOG.md URL here.'"
|
|
22
|
-
|
|
23
|
-
# Specify which files should be added to the gem when it is released.
|
|
24
|
-
# The `git ls-files -z` loads the files in the RubyGem that have been added into git.
|
|
25
|
-
spec.files = %w(.ruby-version CHANGELOG Gemfile Gemfile.lock Guardfile LICENSE.txt README.md Rakefile bin/setup config/environment.rb lib/pageviews.rb lib/pageviews_log_aggregator.rb lib/parser.rb lib/unique_pageviews.rb log-analyser.gemspec version.rb)
|
|
26
|
-
spec.bindir = 'exe'
|
|
27
|
-
spec.executables = spec.files.grep(/^exe\//) { |f| File.basename(f) }
|
|
28
|
-
spec.require_paths = ['lib']
|
|
29
|
-
end
|
data/version.rb
DELETED