a7171af0a3
* Fix avatar and header issues by using custom geometry detector Revert a part of #6508. The file passed to dynamic styles method was not actually a file, but an instance of Paperclip::Attachment, which broke all styles by always returning {} from the method. One problem with GIF avatars was that Paperclip::GeometryDetector reported wrong dimensions for them, e.g. 120x120 GIF avatar would for some reason be detected as 120x53. By writing our own geometry parser, we can use FastImage, which also happens to be faster than ImageMagick, to detect image dimensions, which are also correct. Unfortunately, this PR does not implement skipping a `convert` entirely if the dimensions are already correct, as I found no easy way to write that behaviour into Paperclip without rewriting the Paperclip::Thumbnail class. * Only invoke convert if dimension or format needs to be changed
101 lines
2.8 KiB
Ruby
101 lines
2.8 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)
|
|
|
|
require_relative '../app/lib/exceptions'
|
|
require_relative '../lib/paperclip/lazy_thumbnail'
|
|
require_relative '../lib/paperclip/gif_transcoder'
|
|
require_relative '../lib/paperclip/video_transcoder'
|
|
require_relative '../lib/mastodon/snowflake'
|
|
require_relative '../lib/mastodon/version'
|
|
|
|
Dotenv::Railtie.load
|
|
|
|
require_relative '../lib/mastodon/redis_config'
|
|
|
|
module Mastodon
|
|
class Application < Rails::Application
|
|
# Initialize configuration defaults for originally generated Rails version.
|
|
config.load_defaults 5.1
|
|
|
|
# Settings in config/environments/* take precedence over those specified here.
|
|
# Application configuration should go into files in config/initializers
|
|
# -- all .rb files in that directory are automatically loaded.
|
|
|
|
# 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)'
|
|
|
|
# The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
|
|
# config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
|
|
config.i18n.available_locales = [
|
|
:en,
|
|
:ar,
|
|
:bg,
|
|
:ca,
|
|
:de,
|
|
:eo,
|
|
:es,
|
|
:fa,
|
|
:fi,
|
|
:fr,
|
|
:gl,
|
|
:he,
|
|
:hr,
|
|
:hu,
|
|
:hy,
|
|
:id,
|
|
:io,
|
|
:it,
|
|
:ja,
|
|
:ko,
|
|
:nl,
|
|
:no,
|
|
:oc,
|
|
:pl,
|
|
:pt,
|
|
:'pt-BR',
|
|
:ru,
|
|
:sk,
|
|
:sr,
|
|
:'sr-Latn',
|
|
:sv,
|
|
:th,
|
|
:tr,
|
|
:uk,
|
|
:'zh-CN',
|
|
:'zh-HK',
|
|
:'zh-TW',
|
|
]
|
|
|
|
config.i18n.default_locale = :en
|
|
|
|
# config.paths.add File.join('app', 'api'), glob: File.join('**', '*.rb')
|
|
# config.autoload_paths += Dir[Rails.root.join('app', 'api', '*')]
|
|
|
|
config.active_job.queue_adapter = :sidekiq
|
|
|
|
config.middleware.insert_before 0, Rack::Cors do
|
|
allow do
|
|
origins '*'
|
|
resource '/@:username', headers: :any, methods: [:get], credentials: false
|
|
resource '/api/*', headers: :any, methods: [:post, :put, :delete, :get, :patch, :options], credentials: false, expose: ['Link', 'X-RateLimit-Reset', 'X-RateLimit-Limit', 'X-RateLimit-Remaining', 'X-Request-Id']
|
|
resource '/oauth/token', headers: :any, methods: [:post], credentials: false
|
|
end
|
|
end
|
|
|
|
config.middleware.use Rack::Attack
|
|
config.middleware.use Rack::Deflater
|
|
|
|
config.to_prepare do
|
|
Doorkeeper::AuthorizationsController.layout 'modal'
|
|
Doorkeeper::AuthorizedApplicationsController.layout 'admin'
|
|
Doorkeeper::Application.send :include, ApplicationExtension
|
|
end
|
|
end
|
|
end
|