hiddengems 0.1.2 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +24 -22
- data/exe/hiddengems.rb +15 -16
- data/hiddengems.gemspec +1 -0
- data/lib/hiddengems/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cbd3bf240c66763263cb3a431d2e7e021a125494a6d8bcd8506ce79999d44785
|
4
|
+
data.tar.gz: b0bd717c020c74e3822863e01b27f3f17e1f7f9607457e460ad41aa613a87be1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0509ce583caea5f997bb957ebdaadd0981c82108fd281f5fc03d4cfd18cb63f8dcd8e59a848800a51572e6a4741c92f19184d6f516f8b16e04ac485395c506a4'
|
7
|
+
data.tar.gz: 9d1760403e3e039ef9609af1c4631370d2384f7430f955f57235e2bc0f96d441eb07b2e51fbc7f160ab3b289cea621e4ca20ab32b494882298ccf89d05a81603
|
data/README.md
CHANGED
@@ -7,12 +7,13 @@ and sorts the search results by a number of ranking parameters:
|
|
7
7
|
- number of versions
|
8
8
|
- date of latest version
|
9
9
|
- average date of all released versions
|
10
|
+
- download linear regression trend slope
|
10
11
|
|
11
12
|
Using the above, it produces a table of found gems sorted by "vitality", which
|
12
13
|
works like this:
|
13
14
|
|
14
15
|
The gem's ranking order for each of the above ranking parameters is summed together.
|
15
|
-
The ranking sum that is
|
16
|
+
The ranking sum that is lowest produces the highest "vitality" ranking.
|
16
17
|
|
17
18
|
The rationale for this is: bestgems.org ranks only according to download counts. If developers are using just bestgems.org's results to help find libraries that they need, they'll end up with results that are heavily biased toward libraries that have simply been around for a long time; if a gem has been around for many years it will accrue lots of downloads regardless of whether the gem is being actively developed/improved.
|
18
19
|
|
@@ -20,30 +21,31 @@ Example:
|
|
20
21
|
|
21
22
|
```
|
22
23
|
$ hiddengems.rb 'zabbix sender'
|
23
|
-
|
24
|
+
Found +6 gems (total 6)
|
25
|
+
Search term 'zabbix sender' returned 6 hits
|
24
26
|
Simple Rankings
|
25
|
-
|
26
|
-
|by_downloads |by_versions |by_latest_version_date |by_avg_version_date |
|
27
|
-
|
28
|
-
|zabbix-ruby-client (
|
29
|
-
|zabbix_sender (
|
30
|
-
|zabbix_send (
|
31
|
-
|zabbix_receiver (
|
32
|
-
|zabbix_sender_api (
|
33
|
-
|zabbix_sender_legacy (
|
34
|
-
|
27
|
+
+----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
|
28
|
+
|rank|by_downloads |by_versions |by_latest_version_date |by_avg_version_date |by_download_slope |
|
29
|
+
+----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
|
30
|
+
|0 |zabbix-ruby-client (51368) |zabbix-ruby-client (24) |zabbix_sender_api (2022) |zabbix_sender_api (2021) |zabbix_send (1286) |
|
31
|
+
|1 |zabbix_sender (35004) |zabbix_sender_api (11) |zabbix_sender (2020) |zabbix_sender (2017) |zabbix_receiver (375) |
|
32
|
+
|2 |zabbix_send (13456) |zabbix_sender (5) |zabbix_sender_legacy (2016)|zabbix_sender_legacy (2016)|zabbix_sender (319) |
|
33
|
+
|3 |zabbix_receiver (10286) |zabbix_sender_legacy (5)|zabbix-ruby-client (2016) |zabbix_receiver (2015) |zabbix_sender_legacy (278)|
|
34
|
+
|4 |zabbix_sender_api (10064) |zabbix_receiver (5) |zabbix_receiver (2015) |zabbix-ruby-client (2014) |zabbix_sender_api (100) |
|
35
|
+
|5 |zabbix_sender_legacy (9954)|zabbix_send (3) |zabbix_send (2013) |zabbix_send (2013) |zabbix-ruby-client (64) |
|
36
|
+
+----+---------------------------+------------------------+---------------------------+---------------------------+--------------------------+
|
35
37
|
|
36
38
|
Vitality Ranking:
|
37
|
-
|
38
|
-
|name
|
39
|
-
|
40
|
-
|zabbix_sender
|
41
|
-
|zabbix_sender_api
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
39
|
+
+-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
|
40
|
+
|score|name |info |
|
41
|
+
+-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
|
42
|
+
|7 |zabbix_sender |Zabbix Sender gem |
|
43
|
+
|9 |zabbix_sender_api |This gem implements an api that abstracts the zabbix sender/trapper mechanism. It saves tons of ti… |
|
44
|
+
|12 |zabbix-ruby-client |A zabbix alternative to zabbix-agent using zabbix-sender. |
|
45
|
+
|15 |zabbix_sender_legacy |Improved zabbix_sender gem just for legacy ruby < 2.0 like in Debian Wheezy |
|
46
|
+
|15 |zabbix_receiver |Server to receive sender data from zabbix-agent. |
|
47
|
+
|17 |zabbix_send |Send data to Zabbix trappers from Ruby |
|
48
|
+
+-----+-----------------------------------+----------------------------------------------------------------------------------------------------+
|
47
49
|
```
|
48
50
|
|
49
51
|
## Installation
|
data/exe/hiddengems.rb
CHANGED
@@ -5,6 +5,7 @@ require 'faraday'
|
|
5
5
|
require 'ostruct'
|
6
6
|
require 'tty-table'
|
7
7
|
require 'pry-rescue'
|
8
|
+
require 'linear_regression_trend'
|
8
9
|
|
9
10
|
searchTerm = ARGV[0]
|
10
11
|
|
@@ -39,7 +40,12 @@ module GemEntry
|
|
39
40
|
res.push(version.to_h)
|
40
41
|
nextRelease = version.publishedDate
|
41
42
|
}
|
42
|
-
res
|
43
|
+
res.collect{|each|each[:downloadsPerDay]}
|
44
|
+
end
|
45
|
+
|
46
|
+
def downloadSlope
|
47
|
+
slope = LinearRegressionTrend::Calculator.new(versionDownloadHistory).slope
|
48
|
+
slope.nan? ? 0 : slope
|
43
49
|
end
|
44
50
|
end
|
45
51
|
|
@@ -81,38 +87,31 @@ until curpage == 0
|
|
81
87
|
end
|
82
88
|
|
83
89
|
|
84
|
-
puts "Search term #{searchTerm} returned #{gems.size} hits"
|
85
|
-
|
86
|
-
# Things we wanna see sorted:
|
87
|
-
# + number of versions
|
88
|
-
# + date of last version
|
89
|
-
# + avg date of all versions
|
90
|
-
# + number of downloads
|
91
|
-
# - downloads per day per version
|
92
|
-
# - average downloads per day
|
93
|
-
# - last downloads per day
|
94
|
-
# - velocity of downloads per day per version
|
95
|
-
|
90
|
+
puts "Search term '#{searchTerm}' returned #{gems.size} hits"
|
96
91
|
|
97
92
|
data = Hash.new
|
98
93
|
data[:by_downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
|
99
94
|
data[:by_versions] = gems.sort {|a,b| b.totalVersions <=> a.totalVersions}.collect {|each| "#{each.name} (#{each.totalVersions})"}
|
100
95
|
data[:by_latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.latestVersionDate}.collect {|each| "#{each.name} (#{each.latestVersionDate.year})"}
|
101
96
|
data[:by_avg_version_date] = gems.sort {|a,b| b.avgDateOfAllVersions<=> a.avgDateOfAllVersions}.collect {|each| "#{each.name} (#{each.avgDateOfAllVersions.year})"}
|
97
|
+
data[:by_download_slope] = gems.sort {|a,b| b.downloadSlope <=> a.downloadSlope}.collect {|each| "#{each.name} (#{each.downloadSlope.round})"}
|
102
98
|
report = Array.new
|
99
|
+
rank = 0
|
103
100
|
gems.each_index {|index|
|
104
101
|
record = Hash.new
|
105
|
-
[:
|
102
|
+
record[:rank] = rank
|
103
|
+
[:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date,:by_download_slope].each {|column|
|
106
104
|
record[column] = data[column][index]
|
107
105
|
gemdict[data[column][index].split(' (').first][:rank] += index
|
108
106
|
}
|
109
107
|
report.push(record)
|
108
|
+
rank += 1
|
110
109
|
}
|
111
110
|
|
112
111
|
puts "Simple Rankings"
|
113
|
-
puts TTY::Table.new(header: data.keys, rows: report).render(:ascii)
|
112
|
+
puts TTY::Table.new(header: [:rank]+data.keys, rows: report).render(:ascii, resize: false, column_widths: [5,30,30,30,30,30])
|
114
113
|
|
115
114
|
puts "\nVitality Ranking:"
|
116
|
-
puts TTY::Table.new(header: [:name,:info], rows: gems.sort {|a,b| a.
|
115
|
+
puts TTY::Table.new(header: [:score, :name,:info], rows: gems.sort {|a,b| a.rank<=>b.rank}.collect {|each| [each.rank,each.name,each.info]}).render(:ascii, column_widths: [5,35,100],resize: false)
|
117
116
|
|
118
117
|
puts
|
data/hiddengems.gemspec
CHANGED
@@ -36,6 +36,7 @@ Gem::Specification.new do |spec|
|
|
36
36
|
spec.add_dependency 'ostruct'
|
37
37
|
spec.add_dependency 'tty-table'
|
38
38
|
spec.add_dependency 'pry-rescue'
|
39
|
+
spec.add_dependency 'linear_regression_trend'
|
39
40
|
|
40
41
|
# For more information and examples about making a new gem, checkout our
|
41
42
|
# guide at: https://bundler.io/guides/creating_gem.html
|
data/lib/hiddengems/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hiddengems
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dave Parker
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-08-
|
11
|
+
date: 2022-08-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: linear_regression_trend
|
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'
|
97
111
|
description: Provides a cli that lets you search rubygems for a search term. Displays
|
98
112
|
multiple ranking criteria with emphasis on project vitality
|
99
113
|
email:
|