chris_lib 1.0.11 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|