diff --git a/config/application.rb b/config/application.rb index 3c62a492289..5b54757da2c 100644 --- a/config/application.rb +++ b/config/application.rb @@ -112,6 +112,8 @@ module Mastodon end end + config.x.storage = config_for(:storage) + config.to_prepare do Doorkeeper::AuthorizationsController.layout 'modal' Doorkeeper::AuthorizedApplicationsController.layout 'admin' diff --git a/config/initializers/1_hosts.rb b/config/initializers/1_hosts.rb index 5c59e28bd12..95ed98e7c4c 100644 --- a/config/initializers/1_hosts.rb +++ b/config/initializers/1_hosts.rb @@ -12,8 +12,8 @@ Rails.application.configure do config.x.local_domain = host config.x.web_domain = web_host config.x.use_https = https - config.x.use_s3 = ENV['S3_ENABLED'] == 'true' - config.x.use_swift = ENV['SWIFT_ENABLED'] == 'true' + config.x.use_s3 = Rails.configuration.x.storage.s3_enabled + config.x.use_swift = Rails.configuration.x.storage.swift_enabled config.x.alternate_domains = alternate_domains diff --git a/config/initializers/paperclip.rb b/config/initializers/paperclip.rb index 6b14985ae30..c9c369dd30a 100644 --- a/config/initializers/paperclip.rb +++ b/config/initializers/paperclip.rb @@ -35,7 +35,7 @@ Paperclip::Attachment.default_options.merge!( storage: :fog ) -if ENV['S3_ENABLED'] == 'true' +if Rails.configuration.x.storage.s3_enabled require 'aws-sdk-s3' s3_region = ENV.fetch('S3_REGION') { 'us-east-1' } @@ -115,7 +115,7 @@ if ENV['S3_ENABLED'] == 'true' end Paperclip::Storage::S3.prepend(Paperclip::Storage::S3Extensions) -elsif ENV['SWIFT_ENABLED'] == 'true' +elsif Rails.configuration.x.storage.swift_enabled require 'fog/openstack' Paperclip::Attachment.default_options.merge!( @@ -139,7 +139,7 @@ elsif ENV['SWIFT_ENABLED'] == 'true' fog_host: ENV['SWIFT_OBJECT_URL'], fog_public: true ) -elsif ENV['AZURE_ENABLED'] == 'true' +elsif Rails.configuration.x.storage.azure_enabled require 'paperclip-azure' Paperclip::Attachment.default_options.merge!( diff --git a/config/storage.yml b/config/storage.yml index e69de29bb2d..cdaaf3407f7 100644 --- a/config/storage.yml +++ b/config/storage.yml @@ -0,0 +1,4 @@ +shared: + azure_enabled: <%= ENV.fetch('AZURE_ENABLED', 'false') %> + s3_enabled: <%= ENV.fetch('S3_ENABLED', 'false') %> + swift_enabled: <%= ENV.fetch('SWIFT_ENABLED', 'false') %> diff --git a/spec/lib/content_security_policy_spec.rb b/spec/lib/content_security_policy_spec.rb index 27a3e802573..02d3ac40114 100644 --- a/spec/lib/content_security_policy_spec.rb +++ b/spec/lib/content_security_policy_spec.rb @@ -116,8 +116,11 @@ describe ContentSecurityPolicy do context 'when s3_enabled is configured' do around do |example| - ClimateControl.modify S3_ENABLED: 'true', S3_HOSTNAME: 'asset-host.s3.example' do + ClimateControl.modify S3_HOSTNAME: 'asset-host.s3.example' do + original = Rails.configuration.x.storage.s3_enabled + Rails.configuration.x.storage.s3_enabled = true example.run + Rails.configuration.x.storage.s3_enabled = original end end