45 lines
1.5 KiB
Ruby
45 lines
1.5 KiB
Ruby
# Copyright (C) 2012-2022 Zammad Foundation, https://zammad-foundation.org/
|
|
|
|
# NOTE: Why use Mysql2::Client / PG::Connection over ActiveRecord::Base.connection?
|
|
#
|
|
# As of Rails 5.2, db:create now runs initializers prior to creating the DB.
|
|
# That means if an initializer tries to establish an ActiveRecord::Base.connection,
|
|
# it will raise an ActiveRecord::NoDatabaseError
|
|
# (see https://github.com/rails/rails/issues/32870 for more details).
|
|
#
|
|
# The workaround is to use the bare RDBMS library
|
|
# and connect without specifying a database (MySQL),
|
|
# or connect to a standard system database instead (PostgreSQL).
|
|
|
|
module Zammad
|
|
class Application
|
|
module Initializer
|
|
module DbPreflightCheck
|
|
module Base
|
|
def check_version_compatibility
|
|
return if Gem::Version.new(current_version) >= Gem::Version.new(min_version)
|
|
|
|
err(<<~MSG)
|
|
Incompatible database backend version
|
|
(#{vendor} #{min_version}+ required; #{current_version} found)
|
|
MSG
|
|
end
|
|
|
|
def warn(msg)
|
|
printf "\e[33m" # ANSI yellow
|
|
puts "Warning: #{msg}" # rubocop:disable Rails/Output
|
|
printf "\e[0m" # ANSI normal
|
|
end
|
|
|
|
def err(msg)
|
|
printf "\e[31m" # ANSI red
|
|
puts "Error: #{msg}" # rubocop:disable Rails/Output
|
|
printf "\e[0m" # ANSI normal
|
|
|
|
exit 1 # rubocop:disable Rails/Exit
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|