From a741dceace72bd41aa8bbbb613d40c5dd82c1ceb Mon Sep 17 00:00:00 2001 From: Molly Struve Date: Tue, 3 Nov 2020 11:51:53 -0500 Subject: [PATCH] Refactor:Implement Carrierwave Monkeypatch in all Envs (#11233) * Refactor:Implement Carrierwave Monkeypatch for all Envs * add a spec for monkey patch --- config/initializers/carrierwave_monkeypatch.rb | 16 +++++++--------- .../carrierwave_monkeypatch_spec.rb | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 spec/initializers/carrierwave_monkeypatch_spec.rb diff --git a/config/initializers/carrierwave_monkeypatch.rb b/config/initializers/carrierwave_monkeypatch.rb index d6f571ea8..e2e6d7c35 100644 --- a/config/initializers/carrierwave_monkeypatch.rb +++ b/config/initializers/carrierwave_monkeypatch.rb @@ -3,15 +3,13 @@ # We also force this to use the SiteConfig instead of APP_DOMAIN because the value # could change after initial boot. -if Rails.env.production? - module CarrierWave - module Storage - class Fog < Abstract - class File - include CarrierWave::Utilities::Uri - def url - public_url.gsub(ApplicationConfig["APP_DOMAIN"], SiteConfig.app_domain) - end +module CarrierWave + module Storage + class Fog < Abstract + class File + include CarrierWave::Utilities::Uri + def url + public_url.gsub(ApplicationConfig["APP_DOMAIN"], SiteConfig.app_domain) end end end diff --git a/spec/initializers/carrierwave_monkeypatch_spec.rb b/spec/initializers/carrierwave_monkeypatch_spec.rb new file mode 100644 index 000000000..516e97590 --- /dev/null +++ b/spec/initializers/carrierwave_monkeypatch_spec.rb @@ -0,0 +1,18 @@ +# rubocop:disable RSpec/FilePath +require "rails_helper" + +describe CarrierWave::Storage::Fog::File do + it "replaces ApplicationConfig APP_DOMAIN with SiteConfig.app_domain" do + CarrierWave::Uploader::Base.fog_credentials = { + provider: "AWS", aws_access_key_id: "foo", aws_secret_access_key: "bar" + } + allow(ApplicationConfig).to receive(:[]).with("APP_DOMAIN").and_return("s3.amazonaws.com") + allow(SiteConfig).to receive(:app_domain).and_return("forem.com") + file_url = described_class.new( + CarrierWave::Uploader::Base, nil, "/a/path" + ).url + + expect(file_url).to include("forem.com") + end +end +# rubocop:enable RSpec/FilePath