127 lines
3.6 KiB
Ruby
127 lines
3.6 KiB
Ruby
# typed: false
|
|
|
|
require_relative "boot"
|
|
|
|
require "rails"
|
|
# Pick the frameworks you want:
|
|
require "active_model/railtie"
|
|
require "active_job/railtie"
|
|
require "active_record/railtie"
|
|
# require "active_storage/engine"
|
|
require "action_controller/railtie"
|
|
require "action_mailer/railtie"
|
|
# require "action_mailbox/engine"
|
|
# require "action_text/engine"
|
|
require "action_view/railtie"
|
|
# require "action_cable/engine"
|
|
require "rails/test_unit/railtie"
|
|
|
|
# Require the gems listed in Gemfile, including any gems
|
|
# you've limited to :test, :development, or :production.
|
|
Bundler.require(*Rails.groups)
|
|
|
|
module Lobsters
|
|
class Application < Rails::Application
|
|
# Initialize configuration defaults for originally generated Rails version.
|
|
config.load_defaults 7.1
|
|
|
|
# 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.
|
|
|
|
# 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 = "Central Time (US & Canada)"
|
|
|
|
config.autoload_paths << "#{root}/extras"
|
|
|
|
# Raise an exception when using mass assignment with unpermitted attributes
|
|
config.action_controller.action_on_unpermitted_parameters = :raise
|
|
|
|
# log where queries came from
|
|
config.active_record.query_log_tags_enabled = true
|
|
config.active_record.cache_query_log_tags = true
|
|
|
|
config.cache_store = :file_store, "#{config.root}/tmp/cache/"
|
|
config.active_support.cache_format_version = 7.0 # bump to 7.1 after 7.1 deploy fills caches
|
|
|
|
config.exceptions_app = routes
|
|
|
|
config.skip_yarn = true
|
|
|
|
config.after_initialize do
|
|
require Rails.root.join("lib/monkey.rb").to_s
|
|
require Rails.root.join("lib/time_series.rb").to_s
|
|
end
|
|
|
|
config.generators do |g|
|
|
g.factory_bot false
|
|
end
|
|
|
|
# https://discuss.rubyonrails.org/t/cve-2022-32224-possible-rce-escalation-bug-with-serialized-columns-in-active-record/81017
|
|
# activerecord-typedstore needs:
|
|
config.active_record.yaml_column_permitted_classes = [ActiveSupport::HashWithIndifferentAccess]
|
|
|
|
# rails stop putting js on everything
|
|
config.action_view.form_with_generates_remote_forms = false
|
|
end
|
|
end
|
|
|
|
# disable yaml/xml/whatever input parsing
|
|
silence_warnings do
|
|
ActionDispatch::Http::Parameters::DEFAULT_PARSERS = {}.freeze
|
|
end
|
|
|
|
# site-wide settings
|
|
class << Rails.application
|
|
def allow_invitation_requests?
|
|
false
|
|
end
|
|
|
|
def allow_new_users_to_invite?
|
|
false
|
|
end
|
|
|
|
def open_signups?
|
|
ENV["OPEN_SIGNUPS"] == "true"
|
|
end
|
|
|
|
def domain
|
|
"lobste.rs"
|
|
end
|
|
|
|
def name
|
|
"Lobsters"
|
|
end
|
|
|
|
# to force everyone to be considered logged-out (without destroying
|
|
# sessions) and refuse new logins
|
|
def read_only?
|
|
false
|
|
end
|
|
|
|
def root_url
|
|
Rails.application.routes.url_helpers.root_url(
|
|
host: Rails.application.domain,
|
|
protocol: Rails.application.ssl? ? "https" : "http"
|
|
)
|
|
end
|
|
|
|
# used as mailing list prefix, cannot have spaces
|
|
def shortname
|
|
name.downcase.gsub(/[^a-z]/, "")
|
|
end
|
|
|
|
# whether absolute URLs should include https (does not require that
|
|
# config.force_ssl be on)
|
|
def ssl?
|
|
true
|
|
end
|
|
end
|