health_check 3.0.0 → 3.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 +5 -5
- data/.gitignore +2 -0
- data/.travis.yml +150 -11
- data/CHANGELOG +21 -0
- data/README.rdoc +78 -21
- data/Rakefile +1 -1
- data/Vagrantfile +13 -1
- data/config/routes.rb +1 -1
- data/health_check.gemspec +4 -4
- data/lib/health_check.rb +45 -5
- data/lib/health_check/elasticsearch_health_check.rb +15 -0
- data/lib/health_check/health_check_controller.rb +32 -21
- data/lib/health_check/health_check_routes.rb +1 -1
- data/lib/health_check/middleware_health_check.rb +6 -1
- data/lib/health_check/rabbitmq_health_check.rb +16 -0
- data/lib/health_check/redis_health_check.rb +20 -7
- data/lib/health_check/s3_health_check.rb +9 -14
- data/lib/health_check/utils.rb +44 -30
- data/lib/health_check/version.rb +1 -1
- data/test/fake_smtp_server +143 -24
- data/test/init_variables +19 -1
- data/test/migrate/twelve/012_create_users.rb +1 -1
- data/test/provision_vagrant +55 -13
- data/test/rails_5.0.gemfile +8 -7
- data/test/rails_5.1.gemfile +7 -8
- data/test/rails_5.2.gemfile +34 -0
- data/test/rails_6.0.gemfile +30 -0
- data/test/rails_6.1.gemfile +29 -0
- data/test/rails_6.2.gemfile +30 -0
- data/test/rails_edge.gemfile +37 -0
- data/test/setup_railsapp +138 -54
- data/test/test_with_railsapp +137 -44
- data/test/testurl +9 -0
- metadata +24 -12
data/lib/health_check/version.rb
CHANGED
data/test/fake_smtp_server
CHANGED
@@ -1,38 +1,157 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
3
|
require 'socket'
|
4
|
+
require 'openssl'
|
4
5
|
|
5
|
-
|
6
|
+
class FakeSmtpServer
|
7
|
+
def initialize(port)
|
8
|
+
@port = port
|
9
|
+
@socket = TCPServer.new(@port)
|
10
|
+
@client = @orig_client = nil
|
11
|
+
end
|
6
12
|
|
13
|
+
def start
|
14
|
+
return unless @client.nil?
|
7
15
|
|
8
|
-
|
9
|
-
|
16
|
+
puts "fake_smtp_server: Waiting for one connection to port #{@port} ..."
|
17
|
+
@client = @socket.accept
|
10
18
|
|
11
|
-
|
12
|
-
|
13
|
-
puts "> #{line}"
|
14
|
-
end
|
19
|
+
send '220 dummy-smtp.example.com SMTP'
|
20
|
+
cmd = receive
|
15
21
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
22
|
+
while cmd !~ /^QUIT\r/
|
23
|
+
if cmd =~ /^HELO(.*)\r/
|
24
|
+
if ENV['FAIL_SMTP'] == 'HELO'
|
25
|
+
send '550 Access Denied – Invalid HELO name'
|
26
|
+
else
|
27
|
+
send '250-Welcome to a dummy smtp server'
|
28
|
+
unless ENV['SMTP_STARTTLS'] == 'DISABLED'
|
29
|
+
send '250-STARTTLS'
|
30
|
+
end
|
31
|
+
send '250-AUTH PLAIN LOGIN'
|
32
|
+
send '250 Ok'
|
33
|
+
end
|
34
|
+
elsif cmd =~ /^AUTH(.*)\r/
|
35
|
+
if ENV['FAIL_SMTP'] == 'AUTH'
|
36
|
+
send '535 5.7.8 Authentication credentials invalid'
|
37
|
+
else
|
38
|
+
send '235 2.7.0 Authentication successful'
|
39
|
+
end
|
40
|
+
elsif cmd =~ /^STARTTLS\r/
|
41
|
+
if ENV['SMTP_STARTTLS'] == 'DISABLED'
|
42
|
+
send '502 STARTTLS is disabled!'
|
43
|
+
end
|
44
|
+
send '220 Ready to start TLS'
|
45
|
+
if ENV['FAIL_SMTP'] == 'STARTTLS'
|
46
|
+
cmd = receive
|
47
|
+
return close
|
48
|
+
end
|
49
|
+
@orig_client = @client
|
50
|
+
@client = tlsconnect(@client)
|
51
|
+
else
|
52
|
+
send '502 I am so dumb I only understand HELO, AUTH, STARTTLS and QUIT which always return a success status'
|
53
|
+
end
|
54
|
+
|
55
|
+
cmd = receive
|
56
|
+
end
|
57
|
+
send '221 Bye Bye'
|
58
|
+
|
59
|
+
close
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def close
|
65
|
+
@client.close unless @client.nil?
|
66
|
+
@orig_client.close unless @orig_client.nil?
|
67
|
+
end
|
68
|
+
|
69
|
+
def send(line)
|
70
|
+
@client.puts line
|
71
|
+
puts "-> #{line}"
|
72
|
+
end
|
73
|
+
|
74
|
+
def receive
|
75
|
+
line = @client.gets
|
76
|
+
puts "<- #{line}"
|
77
|
+
line
|
78
|
+
end
|
79
|
+
|
80
|
+
def ssl_socket(client, context)
|
81
|
+
OpenSSL::SSL::SSLSocket.new(client, context)
|
82
|
+
end
|
83
|
+
|
84
|
+
def ssl_context
|
85
|
+
@_ssl_context ||= begin
|
86
|
+
key, cert = generate_certificate
|
87
|
+
|
88
|
+
context = OpenSSL::SSL::SSLContext.new
|
89
|
+
context.key = key
|
90
|
+
context.cert = cert
|
91
|
+
context.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
92
|
+
context.min_version = nil
|
93
|
+
context
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
# Pass socket from TCPServer.new accept
|
98
|
+
def tlsconnect(client)
|
99
|
+
ssl_client = ssl_socket(client, ssl_context)
|
100
|
+
puts '=> TLS connection started'
|
101
|
+
ssl_client.accept
|
102
|
+
puts '=> TLS connection established'
|
103
|
+
|
104
|
+
ssl_client
|
105
|
+
end
|
21
106
|
|
22
|
-
|
23
|
-
|
24
|
-
|
107
|
+
def generate_certificate
|
108
|
+
key = OpenSSL::PKey::RSA.new(2048)
|
109
|
+
name = OpenSSL::X509::Name.parse('CN=localhost')
|
25
110
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
111
|
+
cert = OpenSSL::X509::Certificate.new
|
112
|
+
cert.version = 2
|
113
|
+
cert.serial = 0
|
114
|
+
cert.not_before = Time.now
|
115
|
+
cert.not_after = Time.now + 3600
|
116
|
+
|
117
|
+
cert.public_key = key.public_key
|
118
|
+
cert.subject = name
|
119
|
+
|
120
|
+
extension_factory = OpenSSL::X509::ExtensionFactory.new nil, cert
|
121
|
+
|
122
|
+
cert.add_extension extension_factory.create_extension('basicConstraints', 'CA:FALSE', true)
|
123
|
+
cert.add_extension extension_factory.create_extension('keyUsage', 'keyEncipherment,dataEncipherment,digitalSignature')
|
124
|
+
cert.add_extension extension_factory.create_extension('subjectKeyIdentifier', 'hash')
|
125
|
+
|
126
|
+
cert.issuer = name
|
127
|
+
cert.sign key, OpenSSL::Digest::SHA256.new
|
128
|
+
|
129
|
+
[key, cert]
|
31
130
|
end
|
32
|
-
cmd = receive(client)
|
33
131
|
end
|
34
|
-
send(client, "221 Bye Bye")
|
35
132
|
|
36
|
-
|
37
|
-
|
133
|
+
FakeSmtpServer.new(3555).start
|
134
|
+
|
135
|
+
puts 'fake_smtp_server: Exiting now the conversation has finished.'
|
38
136
|
exit 0
|
137
|
+
|
138
|
+
# Tested with irb script:
|
139
|
+
# require 'net/smtp'
|
140
|
+
#
|
141
|
+
# status = ''
|
142
|
+
# begin
|
143
|
+
# if @skip_external_checks
|
144
|
+
# status = '250'
|
145
|
+
# else
|
146
|
+
# smtp = Net::SMTP.new('localhost', 3555)
|
147
|
+
# smtp.enable_starttls
|
148
|
+
# smtp.open_timeout = 10
|
149
|
+
# smtp.read_timeout = 10
|
150
|
+
# smtp.start('domain', 'user_name', 'password', :plain) do
|
151
|
+
# status = smtp.helo('domain').status
|
152
|
+
# end
|
153
|
+
# end
|
154
|
+
# rescue Exception => ex
|
155
|
+
# status = ex.to_s
|
156
|
+
# end
|
157
|
+
# (status =~ /^250/) ? 'PASS' : "FAILED SMTP: #{status || 'unexpected error'}. "
|
data/test/init_variables
CHANGED
@@ -1,7 +1,25 @@
|
|
1
1
|
#!/bin/bash
|
2
2
|
|
3
3
|
# Any failure causes exit
|
4
|
-
set -
|
4
|
+
set -eE -o functrace
|
5
|
+
|
6
|
+
report_failure() {
|
7
|
+
local lineno=$2
|
8
|
+
local fn=$3
|
9
|
+
local exitstatus=$4
|
10
|
+
local msg=$5
|
11
|
+
local lineno_fns=${1% 0}
|
12
|
+
if [[ $lineno_fns != "0" ]] ; then
|
13
|
+
lineno="${lineno} ${lineno_fns}"
|
14
|
+
fi
|
15
|
+
if [[ $exitstatus == 0 ]] ; then
|
16
|
+
echo "${BASH_SOURCE[1]}: Finished!"
|
17
|
+
else
|
18
|
+
echo "${BASH_SOURCE[1]}:${fn}[${lineno}] Failed with status ${exitstatus}: $msg"
|
19
|
+
fi
|
20
|
+
}
|
21
|
+
|
22
|
+
trap 'report_failure "${BASH_LINENO[*]}" "$LINENO" "${FUNCNAME[*]:-script}" "$?" "$BASH_COMMAND"' ERR
|
5
23
|
|
6
24
|
echo Setting RAILS_ENV=test RACK_ENV=test
|
7
25
|
export RAILS_ENV=test RACK_ENV=test
|
data/test/provision_vagrant
CHANGED
@@ -7,22 +7,55 @@ case `id` in
|
|
7
7
|
exec echo Must be run as root
|
8
8
|
;;
|
9
9
|
esac
|
10
|
-
|
10
|
+
|
11
|
+
chruby_version=0.3.9
|
12
|
+
chruby=chruby-${chruby_version}
|
13
|
+
set -x
|
14
|
+
set -eE -o functrace
|
15
|
+
|
16
|
+
report_failure() {
|
17
|
+
local lineno=$2
|
18
|
+
local fn=$3
|
19
|
+
local exitstatus=$4
|
20
|
+
local msg=$5
|
21
|
+
local lineno_fns=${1% 0}
|
22
|
+
if [[ $lineno_fns != "0" ]] ; then
|
23
|
+
lineno="${lineno} ${lineno_fns}"
|
24
|
+
fi
|
25
|
+
if [[ $exitstatus == 0 ]] ; then
|
26
|
+
echo "${BASH_SOURCE[1]}: Finished!"
|
27
|
+
else
|
28
|
+
echo "${BASH_SOURCE[1]}:${fn}[${lineno}] Failed with status ${exitstatus}: $msg"
|
29
|
+
fi
|
30
|
+
}
|
31
|
+
|
32
|
+
trap 'report_failure "${BASH_LINENO[*]}" "$LINENO" "${FUNCNAME[*]:-script}" "$?" "$BASH_COMMAND"' ERR
|
33
|
+
|
34
|
+
|
11
35
|
id
|
12
36
|
pwd
|
13
37
|
export DEBIAN_FRONTEND=noninteractive
|
14
38
|
find /tmp/got-apt-update -mtime -1 || ( apt-get update && touch /tmp/got-apt-update )
|
15
|
-
apt install --yes
|
16
|
-
|
39
|
+
apt install --yes -q build-essential ruby ruby-dev sqlite3 libsqlite3-dev nodejs git git-core
|
40
|
+
apt install --yes -q gcc autoconf bison libssl-dev libyaml-dev libreadline6-dev zlib1g-dev libncurses5-dev libffi-dev libgdbm-dev
|
41
|
+
apt install --yes -q libgdbm3
|
42
|
+
# useful when debugging
|
43
|
+
apt install --yes -q silversearcher-ag vim exuberant-ctags
|
44
|
+
apt install --yes -q unattended-upgrades
|
45
|
+
unattended-upgrade
|
46
|
+
# The following is not required for testing, install if you are doing manual tests with extra gems
|
47
|
+
# apt install --yes -q mysql-client mysql-server libmysqlclient-dev
|
48
|
+
# apt install --yes -q libcurl4-openssl-dev libncurses5-dev libxml2-dev libxslt1-dev
|
17
49
|
(
|
18
50
|
echo Install chruby
|
19
|
-
[ -s chruby
|
20
|
-
[
|
21
|
-
cd chruby
|
51
|
+
[ -s ${chruby}.tar.gz ] || wget -q -O ${chruby}.tar.gz https://github.com/postmodern/chruby/archive/v${chruby_version}.tar.gz
|
52
|
+
[ -d ${chruby} ] || tar -xzf ${chruby}.tar.gz
|
53
|
+
cd ${chruby}/
|
22
54
|
./scripts/setup.sh
|
23
55
|
cat > /etc/profile.d/chruby.sh <<'EOF'
|
24
56
|
if [ -n "$BASH_VERSION" ] || [ -n "$ZSH_VERSION" ]; then
|
25
57
|
source /usr/local/share/chruby/chruby.sh
|
58
|
+
#source /usr/local/share/chruby/auto
|
26
59
|
fi
|
27
60
|
EOF
|
28
61
|
chmod a+r /etc/profile.d/chruby.sh
|
@@ -33,29 +66,38 @@ EOF
|
|
33
66
|
which ruby-build || PREFIX=/usr/local ./ruby-build/install.sh
|
34
67
|
|
35
68
|
mkdir -p /opt/rubies
|
36
|
-
|
37
|
-
|
38
|
-
for v in 2.2.0
|
69
|
+
for v in 2.2.2
|
39
70
|
do
|
40
|
-
[ -x /opt/rubies/$v/bin/
|
71
|
+
[ -x /opt/rubies/$v/bin/ruby ] || ( ruby-build $v /opt/rubies/$v )
|
72
|
+
[ -x /opt/rubies/${v}/bin/bundle ] || ( /opt/rubies/${v}/bin/gem install bundler -v '<2.0' )
|
73
|
+
done
|
74
|
+
|
75
|
+
for v in 2.3.8 2.4.10 2.5.9 2.5.0 2.6.6 2.6.7 2.7.1 2.7.3 3.0.1
|
76
|
+
do
|
77
|
+
[ -x /opt/rubies/$v/bin/ruby ] || ( ruby-build $v /opt/rubies/$v )
|
78
|
+
[ -x /opt/rubies/$v/bin/bundle ] || ( /opt/rubies/$v/bin/gem install bundler )
|
41
79
|
done
|
42
80
|
)
|
43
81
|
|
44
82
|
echo Setup system ruby
|
45
|
-
which bundle || gem install bundler
|
83
|
+
which bundle || gem install bundler || gem install bundler -v '<2.0'
|
84
|
+
which bundle || gem install bundler -v '< 2.0'
|
46
85
|
bundle --version
|
47
86
|
set +x
|
48
87
|
cat <<EOF
|
49
88
|
|
50
89
|
Now test by running the following commands:
|
51
90
|
|
91
|
+
vagrant ssh
|
92
|
+
cd /vagrant
|
93
|
+
|
52
94
|
chruby RUBY_VERSION
|
53
95
|
or
|
54
96
|
chruby system # for system version 2.3.1
|
55
97
|
|
56
|
-
vagrant ssh
|
57
|
-
cd /vagrant
|
58
98
|
./test/test_with_railsapp
|
59
99
|
|
100
|
+
exit
|
101
|
+
|
60
102
|
EOF
|
61
103
|
exit
|
data/test/rails_5.0.gemfile
CHANGED
@@ -17,12 +17,13 @@ group :development, :test do
|
|
17
17
|
gem 'sqlite3', "~> 1.3.7"
|
18
18
|
end
|
19
19
|
gem 'shoulda'
|
20
|
-
|
21
|
-
# redis based checks
|
22
|
-
gem 'sidekiq', :require => !ENV['SIDEKIQ'].nil?
|
23
|
-
gem 'redis', :require => !ENV['REDIS_URL'].nil?
|
24
|
-
gem 'resque', :require => !ENV['RESQUE'].nil?
|
25
|
-
# s3 check
|
26
|
-
gem 'aws-sdk', :require => !ENV['AWS_ACCESS_KEY_ID'].nil?
|
27
20
|
end
|
21
|
+
|
22
|
+
# redis based checks
|
23
|
+
gem 'sidekiq', '~> 5.2.9', require: !ENV['SIDEKIQ'].nil? # REQUIRED
|
24
|
+
gem 'redis', '~> 4.0.3', require: !ENV['REDIS_URL'].nil? # REQUIRED
|
25
|
+
gem 'resque', '~> 1.27.4', require: !ENV['RESQUE'].nil? # REQUIRED
|
26
|
+
gem 'elasticsearch', '~> 6.3.1', require: !ENV['ELASTICSEARCH_URL'].nil? # REQUIRED
|
27
|
+
# s3 check
|
28
|
+
gem 'aws-sdk-s3', require: !ENV['AWS_ACCESS_KEY_ID'].nil? # REQUIRED
|
28
29
|
|
data/test/rails_5.1.gemfile
CHANGED
@@ -23,13 +23,12 @@ group :development, :test do
|
|
23
23
|
gem 'sqlite3', "~> 1.3.7"
|
24
24
|
end
|
25
25
|
gem 'shoulda'
|
26
|
-
|
27
|
-
# redis based checks
|
28
|
-
gem 'sidekiq', :require => !ENV['SIDEKIQ'].nil?
|
29
|
-
gem 'redis', :require => !ENV['REDIS_URL'].nil?
|
30
|
-
gem 'resque', :require => !ENV['RESQUE'].nil?
|
31
|
-
# s3 check
|
32
|
-
gem 'aws-sdk', :require => !ENV['AWS_ACCESS_KEY_ID'].nil?
|
33
|
-
|
34
26
|
end
|
35
27
|
|
28
|
+
# redis based checks
|
29
|
+
gem 'sidekiq', '~> 5.2.9', require: !ENV['SIDEKIQ'].nil? # REQUIRED
|
30
|
+
gem 'redis', '~> 4.0.3', require: !ENV['REDIS_URL'].nil? # REQUIRED
|
31
|
+
gem 'resque', '~> 1.27.4', require: !ENV['RESQUE'].nil? # REQUIRED
|
32
|
+
gem 'elasticsearch', '~> 6.3.1', require: !ENV['ELASTICSEARCH_URL'].nil? # REQUIRED
|
33
|
+
# s3 check
|
34
|
+
gem 'aws-sdk', require: !ENV['AWS_ACCESS_KEY_ID'].nil? # REQUIRED
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# Gemfile for health_test testing
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
ruby RUBY_VERSION < '2.2.2' ? '2.2.2' : RUBY_VERSION
|
6
|
+
|
7
|
+
gem 'rails', '~> 5.2.0'
|
8
|
+
gem 'rake', '>= 0.8.7'
|
9
|
+
|
10
|
+
# spring-watcher-listen was resolved to 2.0.1, which depends on
|
11
|
+
# listen was resolved to 3.1.5, which depends on
|
12
|
+
# ruby_dep
|
13
|
+
# and ruby_dep 1.5 requires 2.2.3 or later
|
14
|
+
gem 'ruby_dep', '~> 1.3.0' # REQUIRED
|
15
|
+
|
16
|
+
gem 'listen', '<3.1.2' # REQUIRED
|
17
|
+
|
18
|
+
group :development, :test do
|
19
|
+
if defined?(JRUBY_VERSION)
|
20
|
+
gem 'jruby-openssl'
|
21
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
22
|
+
else
|
23
|
+
gem 'sqlite3', "~> 1.3.7"
|
24
|
+
end
|
25
|
+
gem 'shoulda'
|
26
|
+
end
|
27
|
+
|
28
|
+
# redis based checks
|
29
|
+
gem 'sidekiq', '~> 5.2.9', require: !ENV['SIDEKIQ'].nil? # REQUIRED
|
30
|
+
gem 'redis', '~> 4.0.3', require: !ENV['REDIS_URL'].nil? # REQUIRED
|
31
|
+
gem 'resque', '~> 1.27.4', require: !ENV['RESQUE'].nil? # REQUIRED
|
32
|
+
gem 'elasticsearch', '~> 6.3.1', require: !ENV['ELASTICSEARCH_URL'].nil? # REQUIRED
|
33
|
+
# s3 check
|
34
|
+
gem 'aws-sdk', require: !ENV['AWS_ACCESS_KEY_ID'].nil? # REQUIRED
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Gemfile for health_test testing
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
ruby RUBY_VERSION < '2.5' ? '2.5.0' : RUBY_VERSION
|
6
|
+
|
7
|
+
gem 'rails', '~> 6.0.0'
|
8
|
+
gem 'rake', '>= 0.8.7'
|
9
|
+
|
10
|
+
gem 'listen', '<3.1.2' # REQUIRED
|
11
|
+
|
12
|
+
group :development, :test do
|
13
|
+
if defined?(JRUBY_VERSION)
|
14
|
+
gem 'jruby-openssl'
|
15
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
16
|
+
else
|
17
|
+
gem 'sqlite3', "~> 1.3.7"
|
18
|
+
end
|
19
|
+
gem 'shoulda'
|
20
|
+
end
|
21
|
+
|
22
|
+
# redis based checks
|
23
|
+
gem 'sidekiq', '~> 5.2.9', require: !ENV['SIDEKIQ'].nil? # REQUIRED
|
24
|
+
gem 'redis', '~> 4.0.3', require: !ENV['REDIS_URL'].nil? # REQUIRED
|
25
|
+
gem 'resque', '~> 1.27.4', require: !ENV['RESQUE'].nil? # REQUIRED
|
26
|
+
gem 'elasticsearch', '~> 6.3.1', require: !ENV['ELASTICSEARCH_URL'].nil? # REQUIRED
|
27
|
+
# s3 check
|
28
|
+
gem 'aws-sdk-s3', require: !ENV['AWS_ACCESS_KEY_ID'].nil? # REQUIRED
|
29
|
+
|
30
|
+
gem 'webpacker', '~> 4.0.7' # REQUIRED
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# Gemfile for health_test testing
|
2
|
+
|
3
|
+
source 'https://rubygems.org'
|
4
|
+
|
5
|
+
ruby RUBY_VERSION < '2.5' ? '2.5.0' : RUBY_VERSION
|
6
|
+
|
7
|
+
gem 'rails', '~> 6.1.0'
|
8
|
+
gem 'rake', '>= 0.8.7'
|
9
|
+
|
10
|
+
group :development, :test do
|
11
|
+
if defined?(JRUBY_VERSION)
|
12
|
+
gem 'jruby-openssl'
|
13
|
+
gem 'activerecord-jdbcsqlite3-adapter'
|
14
|
+
else
|
15
|
+
gem 'sqlite3', "~> 1.3.7"
|
16
|
+
end
|
17
|
+
gem 'shoulda'
|
18
|
+
end
|
19
|
+
|
20
|
+
# redis based checks
|
21
|
+
gem 'sidekiq', require: !ENV['SIDEKIQ'].nil? # REQUIRED
|
22
|
+
gem 'redis', require: !ENV['REDIS_URL'].nil? # REQUIRED
|
23
|
+
gem 'resque', require: !ENV['RESQUE'].nil? # REQUIRED
|
24
|
+
# s3 check
|
25
|
+
gem 'aws-sdk-s3', require: !ENV['AWS_ACCESS_KEY_ID'].nil? # REQUIRED
|
26
|
+
|
27
|
+
gem 'webpacker', '~> 4.0.7' # REQUIRED
|
28
|
+
gem 'rexml', '~> 3.2.4' # REQUIRED for ruby 3.0
|
29
|
+
gem 'webrick' # REQUIRED for ruby 3.0
|