add to_bool and env_helper

This commit is contained in:
snogrammer 2021-11-03 18:35:11 -06:00
parent 30a299a863
commit 4de41824ce
3 changed files with 58 additions and 0 deletions

View File

@ -17,6 +17,8 @@ require 'action_cable/engine'
require 'sprockets/railtie'
# require "rails/test_unit/railtie"
require_relative './env_helper' # Helper to set ENV and print missing messages
# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.
Bundler.require(*Rails.groups)

38
config/env_helper.rb Normal file
View File

@ -0,0 +1,38 @@
# frozen_string_literal: true
module EnvHelper
class RequiredEnvError < StandardError; end
module_function
def load(key, default = nil, message: '', raise: false)
env_key = key.to_s.upcase.strip
default_message(key, default)
ENV[env_key] ||= default
return ENV[env_key] if ENV[env_key].present?
raise RequiredEnvError, missing_message(key, message) if raise
puts missing_message(key, message)
nil
end
def missing_message(key, message = '')
msg = "🚫 ENV NOT SET: #{key}"
msg += "\s-\s#{message}" if message.present?
msg
end
def default_message(key, default = nil)
return if ENV[key].present? && default.blank?
puts "✅ ENV #{key} DEFAULT: #{output_default(key, default)}"
end
def output_default(key, default)
return '🤐 SECRET REDACTED' if key.include?('SECRET') || key.ends_with?('API_KEY')
default
end
end

View File

@ -0,0 +1,18 @@
# frozen_string_literal: true
# @see https://gist.github.com/equivalent/3825916#gistcomment-1762089
module ToBoolean
def to_bool
ActiveRecord::Type::Boolean.new.cast(self)
end
end
class NilClass; include ToBoolean; end
class TrueClass; include ToBoolean; end
class FalseClass; include ToBoolean; end
class Numeric; include ToBoolean; end
class String; include ToBoolean; end