otwarchive-symphonyarchive/config/application.rb

154 lines
5.9 KiB
Ruby
Raw Permalink Normal View History

2026-03-11 22:22:11 +00:00
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