hiddengems 0.2.0 → 0.2.3
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 +14 -21
- data/lib/hiddengems/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 55b3634a3b5823bdd3d634dad3e013d377a7e16f3f33496bcc3859dbee798199
|
4
|
+
data.tar.gz: b495911b4b3b4b6f16c43dd539a726bff9422e0c0de4812d17f44fcbab3cf31b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b9e48d6fa7a5d51c3a8cbe3d15fb51abd22ed9741b2de2f76b5aaf519ec4e693755a35417e20b23378c5ddd7122cd6b7deaaeaf55b52f91eb0a6eab6c9d695f1
|
7
|
+
data.tar.gz: 9e5811bc5737f1d13d524091867f3d797f76f832150cfcb36f6fe240c99e07963c00f1bbebb723acb8429b475871c01cd39c68e71cd21c202fa66eabe55911e8
|
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
@@ -67,8 +67,14 @@ curpage = 1
|
|
67
67
|
gems = Array.new
|
68
68
|
gemdict = Hash.new
|
69
69
|
until curpage == 0
|
70
|
+
dupepad = 0
|
70
71
|
gemPage = JSON.parse(Faraday.get("https://rubygems.org/api/v1/search.json?page=#{curpage}&query=#{searchTerm}").body).collect { |each| OpenStruct.new(each)}.collect {|gem|
|
71
72
|
gem.extend(GemEntry)
|
73
|
+
if gemdict.has_key?(gem.name)
|
74
|
+
puts "(rejected a dupe)"
|
75
|
+
dupepad += 1
|
76
|
+
next
|
77
|
+
end
|
72
78
|
gem[:versions] = JSON.parse(
|
73
79
|
Faraday.get(
|
74
80
|
"https://rubygems.org/api/v1/versions/#{gem.name}.json"
|
@@ -79,31 +85,15 @@ until curpage == 0
|
|
79
85
|
gem[:rank] = 0
|
80
86
|
gemdict[gem.name] = gem
|
81
87
|
gem
|
82
|
-
}
|
88
|
+
}.reject(&:nil?)
|
83
89
|
gems += gemPage
|
84
90
|
puts "Found +#{gemPage.size} gems (total #{gems.size})"
|
85
|
-
curpage = ((gemPage.size < 30) ? 0 : curpage.next)
|
91
|
+
curpage = (((gemPage.size + dupepad) < 30) ? 0 : curpage.next)
|
86
92
|
puts "looking for more..." if curpage != 0
|
87
93
|
end
|
88
94
|
|
89
95
|
|
90
|
-
puts "Search term #{searchTerm} returned #{gems.size} hits"
|
91
|
-
|
92
|
-
# Things we wanna see sorted:
|
93
|
-
# + number of versions
|
94
|
-
# + date of last version
|
95
|
-
# + avg date of all versions
|
96
|
-
# + number of downloads
|
97
|
-
# - downloads per day per version
|
98
|
-
# - average downloads per day
|
99
|
-
# - last downloads per day
|
100
|
-
# - trajectory of downloads per day per version
|
101
|
-
# - peak downloads
|
102
|
-
# - min downloads
|
103
|
-
# - where is it now
|
104
|
-
# - slope of a line from peak to current
|
105
|
-
# - slope of line from nadir to current
|
106
|
-
|
96
|
+
puts "Search term '#{searchTerm}' returned #{gems.size} hits"
|
107
97
|
|
108
98
|
data = Hash.new
|
109
99
|
data[:by_downloads] = gems.sort {|a,b| b.downloads <=> a.downloads}.collect {|each| "#{each.name} (#{each.downloads})"}
|
@@ -112,19 +102,22 @@ data[:by_latest_version_date] = gems.sort {|a,b| b.latestVersionDate <=> a.lates
|
|
112
102
|
data[:by_avg_version_date] = gems.sort {|a,b| b.avgDateOfAllVersions<=> a.avgDateOfAllVersions}.collect {|each| "#{each.name} (#{each.avgDateOfAllVersions.year})"}
|
113
103
|
data[:by_download_slope] = gems.sort {|a,b| b.downloadSlope <=> a.downloadSlope}.collect {|each| "#{each.name} (#{each.downloadSlope.round})"}
|
114
104
|
report = Array.new
|
105
|
+
rank = 0
|
115
106
|
gems.each_index {|index|
|
116
107
|
record = Hash.new
|
108
|
+
record[:rank] = rank
|
117
109
|
[:by_downloads,:by_versions,:by_latest_version_date,:by_avg_version_date,:by_download_slope].each {|column|
|
118
110
|
record[column] = data[column][index]
|
119
111
|
gemdict[data[column][index].split(' (').first][:rank] += index
|
120
112
|
}
|
121
113
|
report.push(record)
|
114
|
+
rank += 1
|
122
115
|
}
|
123
116
|
|
124
117
|
puts "Simple Rankings"
|
125
|
-
puts TTY::Table.new(header: data.keys, rows: report).render(:ascii)
|
118
|
+
puts TTY::Table.new(header: [:rank]+data.keys, rows: report).render(:ascii, resize: false, column_widths: [5,30,30,30,30,30])
|
126
119
|
|
127
120
|
puts "\nVitality Ranking:"
|
128
|
-
puts TTY::Table.new(header: [:name,:info], rows: gems.sort {|a,b| a.
|
121
|
+
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)
|
129
122
|
|
130
123
|
puts
|
data/lib/hiddengems/version.rb
CHANGED