chris_lib 1.0.11 → 1.1.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/lib/chris_lib/chris_math.rb +44 -0
- data/lib/chris_lib/shell_methods.rb +45 -3
- data/lib/chris_lib/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5e76deaa3a7824340278bd4eb24898ca3ad0ded771c0fab25ada63ef77bd850e
|
4
|
+
data.tar.gz: febe97bd1fc1c7eb4c55c218961685d35dea75eba78bc0d4b1cf2a26607f4f0c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d99b4d0e88fd728b064212aed2d3bd87ec1921583c2a20e70a906501ec3c175be3f684f444a2495d7c422352eea0a740cfc935568a6e5cf16af261ee6cd8dba3
|
7
|
+
data.tar.gz: bc0a1a439fce1c6e8b8ef6a36b0b557e893e2bab208b694602f2ff2e85393a494dd1da62e261b2c41828864720042bfeb3af7ff0b9020c309c9bc72c69cb3500
|
data/lib/chris_lib/chris_math.rb
CHANGED
@@ -9,12 +9,16 @@ Integer.class_eval do
|
|
9
9
|
end
|
10
10
|
end
|
11
11
|
Array.class_eval do
|
12
|
+
# mean of array
|
12
13
|
def mean
|
14
|
+
# s=c(7.08195525827783, 10.831582068121444, 9.288611270369554, 9.054684238411918, 12.268532229606647)
|
15
|
+
# returns 9.705073
|
13
16
|
fail 'Length must be greater than 0.' if length < 1
|
14
17
|
sum = self.inject { |s, v| s + v }
|
15
18
|
sum.to_f / length
|
16
19
|
end
|
17
20
|
|
21
|
+
# unbiased sample variance of array
|
18
22
|
def var
|
19
23
|
fail 'Length must be greater than 1' if length < 2
|
20
24
|
mu = self.mean
|
@@ -22,6 +26,16 @@ Array.class_eval do
|
|
22
26
|
total.to_f/(length - 1)
|
23
27
|
end
|
24
28
|
|
29
|
+
# sammple standard deviation
|
30
|
+
def std
|
31
|
+
Math.sqrt(var)
|
32
|
+
end
|
33
|
+
|
34
|
+
# standard error of sample mean
|
35
|
+
def std_err
|
36
|
+
std / Math.sqrt(size)
|
37
|
+
end
|
38
|
+
|
25
39
|
def median
|
26
40
|
return self[0] if length <= 1
|
27
41
|
sorted = sort
|
@@ -38,6 +52,36 @@ Array.class_eval do
|
|
38
52
|
self.each { |x| k[x] += 1 }
|
39
53
|
k
|
40
54
|
end
|
55
|
+
|
56
|
+
# deep dup, takes about 20 microseconds for scores arrays
|
57
|
+
# https://www.thoughtco.com/making-deep-copies-in-ruby-2907749
|
58
|
+
def deep_dup
|
59
|
+
Marshal.load(Marshal.dump(self))
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
Float.class_eval do
|
64
|
+
def round_down(n=0)
|
65
|
+
# n is decimal place to round down at
|
66
|
+
int,dec=self.to_s.split('.')
|
67
|
+
"#{int}.#{dec[0...n]}".to_f
|
68
|
+
end
|
69
|
+
|
70
|
+
def round1
|
71
|
+
round(1)
|
72
|
+
end
|
73
|
+
|
74
|
+
def round2
|
75
|
+
round(2)
|
76
|
+
end
|
77
|
+
|
78
|
+
def round3
|
79
|
+
round(3)
|
80
|
+
end
|
81
|
+
|
82
|
+
def round4
|
83
|
+
round(4)
|
84
|
+
end
|
41
85
|
end
|
42
86
|
|
43
87
|
module ChrisMath
|
@@ -2,8 +2,50 @@
|
|
2
2
|
module ShellMethods
|
3
3
|
require 'dotenv'
|
4
4
|
require 'bundler'
|
5
|
+
require 'optparse'
|
5
6
|
Dotenv.load
|
6
7
|
|
8
|
+
def parse_options
|
9
|
+
@options = {}
|
10
|
+
OptionParser.new do |opts|
|
11
|
+
opts.on("-s", "--skip_migration", "Skip migrations") do
|
12
|
+
@options[:skip_migration] = true
|
13
|
+
end
|
14
|
+
opts.on("-f", "--fast", "Deploy without warnings and skip migrations") do
|
15
|
+
@options[:fast] = true
|
16
|
+
end
|
17
|
+
opts.on("-r", "--special_rake", "Run special rake task") do
|
18
|
+
@options[:special_rake] = true
|
19
|
+
end
|
20
|
+
end.parse!
|
21
|
+
@options[:skip_migration] = true if @options[:fast]
|
22
|
+
end
|
23
|
+
|
24
|
+
def run_special_rake_task
|
25
|
+
fail 'Need to implement by asking for name of rake task and
|
26
|
+
also requiring confirmation'
|
27
|
+
end
|
28
|
+
|
29
|
+
def backup_database
|
30
|
+
file_path = "../backups/prod#{time_hash}.dump"
|
31
|
+
system('./script/getSnapShot.sh production ' + file_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
def warn_users
|
35
|
+
system('heroku run rake util:three_min_warning --remote production')
|
36
|
+
# spend one minute precompiling
|
37
|
+
progress_bar = ProgressBar.create
|
38
|
+
# now 2 minutes waiting
|
39
|
+
increment = 3 * 60 / 100
|
40
|
+
(1..100).each do |_i|
|
41
|
+
sleep increment
|
42
|
+
progress_bar.increment
|
43
|
+
progress_bar.refresh
|
44
|
+
end
|
45
|
+
system('heroku run rake util:delete_newest_announcement --remote production')
|
46
|
+
system('heroku run rake util:warn_under_maintenance --remote production')
|
47
|
+
end
|
48
|
+
|
7
49
|
def precompile_assets(target: 'local')
|
8
50
|
puts "Precompiling assets for #{target}"
|
9
51
|
if target == 'local'
|
@@ -64,9 +106,9 @@ module ShellMethods
|
|
64
106
|
system('cd $OLDPWD')
|
65
107
|
end
|
66
108
|
|
67
|
-
def migrate_if_necessary(remote: nil,
|
68
|
-
if
|
69
|
-
puts "No migration will be performed due to --
|
109
|
+
def migrate_if_necessary(remote: nil, skip_migration: false)
|
110
|
+
if skip_migration
|
111
|
+
puts "No migration will be performed due to --fast or --skip_migration options"
|
70
112
|
else
|
71
113
|
destination=(remote.nil? ? nil : "--remote #{remote}")
|
72
114
|
puts "Checking local and remote databases have same version and migrates if necessary"
|
data/lib/chris_lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: chris_lib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Chris
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2019-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: dotenv
|
@@ -128,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
128
128
|
version: '0'
|
129
129
|
requirements: []
|
130
130
|
rubyforge_project:
|
131
|
-
rubygems_version: 2.7.
|
131
|
+
rubygems_version: 2.7.9
|
132
132
|
signing_key:
|
133
133
|
specification_version: 4
|
134
134
|
summary: This an eclectic collection of methods. It include maths, datetime, and rspec
|