154 lines
5.9 KiB
Ruby
154 lines
5.9 KiB
Ruby
|
|
require_relative "boot"
|
||
|
|
|
||
|
|
require "rails/all"
|
||
|
|
|
||
|
|
# Require the gems listed in Gemfile, including any gems
|
||
|
|
# you've limited to :test, :development, or :production.
|
||
|
|
Bundler.require(*Rails.groups)
|
||
|
|
|
||
|
|
module Otwarchive
|
||
|
|
class Application < Rails::Application
|
||
|
|
app_config = YAML.load_file(Rails.root.join("config/config.yml"))
|
||
|
|
app_config.merge!(YAML.load_file(Rails.root.join("config/local.yml"))) if File.exist?(Rails.root.join("config/local.yml"))
|
||
|
|
::ArchiveConfig = OpenStruct.new(app_config)
|
||
|
|
|
||
|
|
# Please, add to the `ignore` list any other `lib` subdirectories that do
|
||
|
|
# not contain `.rb` files, or that should not be reloaded or eager loaded.
|
||
|
|
# Common ones are `templates`, `generators`, or `middleware`, for example.
|
||
|
|
config.autoload_lib(ignore: %w[assets tasks])
|
||
|
|
|
||
|
|
# Configuration for the application, engines, and railties goes here.
|
||
|
|
#
|
||
|
|
# These settings can be overridden in specific environments using the files
|
||
|
|
# in config/environments, which are processed later.
|
||
|
|
|
||
|
|
config.load_defaults 7.2
|
||
|
|
|
||
|
|
%w[
|
||
|
|
app/models/challenge_models
|
||
|
|
app/models/feedback_reporters
|
||
|
|
app/models/indexing
|
||
|
|
app/models/potential_matcher
|
||
|
|
app/models/search
|
||
|
|
app/models/tagset_models
|
||
|
|
].each do |dir|
|
||
|
|
config.eager_load_paths << Rails.root.join(dir)
|
||
|
|
end
|
||
|
|
|
||
|
|
# I18n validation deprecation warning fix
|
||
|
|
|
||
|
|
I18n.config.enforce_available_locales = false
|
||
|
|
I18n.config.available_locales = [
|
||
|
|
:en, :af, :ar, :bg, :bn, :ca, :cs, :cy, :da, :de, :el, :es, :fa, :fi,
|
||
|
|
:fil, :fr, :he, :hi, :hr, :hu, :id, :it, :ja, :ko, :lt, :lv, :mk,
|
||
|
|
:mr, :ms, :nb, :nl, :pl, :"pt-BR", :"pt-PT", :ro, :ru, :scr, :sk, :sl,
|
||
|
|
:sv, :th, :tr, :uk, :vi, :"zh-CN"
|
||
|
|
]
|
||
|
|
|
||
|
|
# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
|
||
|
|
# Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
|
||
|
|
config.time_zone = "UTC"
|
||
|
|
|
||
|
|
# The default locale is :en.
|
||
|
|
config.i18n.default_locale = ArchiveConfig.DEFAULT_LOCALE_ISO.to_sym
|
||
|
|
|
||
|
|
# Enable locale fallbacks for I18n (makes lookups for any locale fall back to
|
||
|
|
# the I18n.default_locale when a translation can not be found)
|
||
|
|
config.i18n.fallbacks = true
|
||
|
|
|
||
|
|
# JavaScript files you want as :defaults (application.js is always included).
|
||
|
|
# config.action_view.javascript_expansions[:defaults] = %w(jquery rails)
|
||
|
|
|
||
|
|
# Configure the default encoding used in templates for Ruby 1.9.
|
||
|
|
config.encoding = "utf-8"
|
||
|
|
|
||
|
|
config.action_view.automatically_disable_submit_tag = false
|
||
|
|
|
||
|
|
# Disable dumping schemas after migrations.
|
||
|
|
# This can cause problems since we don't always update versions on merge.
|
||
|
|
# Ideally this would be enabled in dev, but we're not quite ready for that.
|
||
|
|
config.active_record.dump_schema_after_migration = false
|
||
|
|
|
||
|
|
# Allows belongs_to associations to be optional
|
||
|
|
config.active_record.belongs_to_required_by_default = false
|
||
|
|
|
||
|
|
# Keeps updated_at in cache keys
|
||
|
|
config.active_record.cache_versioning = false
|
||
|
|
|
||
|
|
# Setting this to true (the default) breaks series orphaning
|
||
|
|
config.active_record.before_committed_on_all_records = false
|
||
|
|
|
||
|
|
# This class is not allowed by default when upgrading Rails to 6.0.5.1 patch
|
||
|
|
config.active_record.yaml_column_permitted_classes = [
|
||
|
|
ActiveSupport::TimeWithZone,
|
||
|
|
Time,
|
||
|
|
ActiveSupport::TimeZone,
|
||
|
|
BCrypt::Password
|
||
|
|
]
|
||
|
|
|
||
|
|
# handle errors with custom error pages:
|
||
|
|
config.exceptions_app = self.routes
|
||
|
|
|
||
|
|
# Bring the log under control
|
||
|
|
config.lograge.enabled = true
|
||
|
|
|
||
|
|
# Only send referrer information to ourselves
|
||
|
|
config.action_dispatch.default_headers = {
|
||
|
|
"Content-Security-Policy" => "frame-ancestors 'self'",
|
||
|
|
"Referrer-Policy" => "strict-origin-when-cross-origin",
|
||
|
|
"X-Frame-Options" => "SAMEORIGIN",
|
||
|
|
"X-XSS-Protection" => "1; mode=block",
|
||
|
|
"X-Content-Type-Options" => "nosniff",
|
||
|
|
"X-Permitted-Cross-Domain-Policies" => "none"
|
||
|
|
}
|
||
|
|
|
||
|
|
# Use Resque to run ActiveJobs (including sending delayed mail):
|
||
|
|
config.active_job.queue_adapter = :resque
|
||
|
|
|
||
|
|
# TODO: Remove with Rails 8.0 where this option will be deprecated
|
||
|
|
config.active_job.enqueue_after_transaction_commit = :always
|
||
|
|
|
||
|
|
config.active_model.i18n_customize_full_message = true
|
||
|
|
|
||
|
|
config.action_mailer.default_url_options = { host: ArchiveConfig.APP_HOST, protocol: "https" }
|
||
|
|
|
||
|
|
# Use "mailer" instead of "mailers" as the Resque queue for emails:
|
||
|
|
config.action_mailer.deliver_later_queue_name = :mailer
|
||
|
|
|
||
|
|
config.action_mailer.delivery_method = :smtp
|
||
|
|
config.action_mailer.smtp_settings = {
|
||
|
|
address: ArchiveConfig.SMTP_SERVER,
|
||
|
|
domain: ArchiveConfig.SMTP_DOMAIN,
|
||
|
|
port: ArchiveConfig.SMTP_PORT,
|
||
|
|
enable_starttls_auto: ArchiveConfig.SMTP_ENABLE_STARTTLS_AUTO,
|
||
|
|
enable_starttls: ArchiveConfig.SMTP_ENABLE_STARTTLS,
|
||
|
|
openssl_verify_mode: ArchiveConfig.SMTP_OPENSSL_VERIFY_MODE
|
||
|
|
}
|
||
|
|
if ArchiveConfig.SMTP_AUTHENTICATION
|
||
|
|
config.action_mailer.smtp_settings.merge!({
|
||
|
|
user_name: ArchiveConfig.SMTP_USER,
|
||
|
|
password: ArchiveConfig.SMTP_PASSWORD,
|
||
|
|
authentication: ArchiveConfig.SMTP_AUTHENTICATION
|
||
|
|
})
|
||
|
|
end
|
||
|
|
|
||
|
|
# Disable ActiveStorage things that we don't need and can hit the DB hard
|
||
|
|
config.active_storage.analyzers = []
|
||
|
|
config.active_storage.previewers = []
|
||
|
|
|
||
|
|
# Set ActiveStorage queue name
|
||
|
|
config.active_storage.queues.mirror = :active_storage
|
||
|
|
config.active_storage.queues.preview_image = :active_storage
|
||
|
|
config.active_storage.queues.purge = :active_storage
|
||
|
|
config.active_storage.queues.transform = :active_storage
|
||
|
|
|
||
|
|
config.active_storage.web_image_content_types = %w[image/png image/jpeg image/gif]
|
||
|
|
|
||
|
|
# Do not enable YJIT automatically once we upgrade to Ruby 3.3
|
||
|
|
config.yjit = false
|
||
|
|
|
||
|
|
# Use secret from archive config
|
||
|
|
config.secret_key_base = ArchiveConfig.SESSION_SECRET
|
||
|
|
end
|
||
|
|
end
|