diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-04 16:44:50 +0200 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2017-07-04 16:44:50 +0200 |
commit | efd950ae706cfbb55dffebd5d0c85e30acfd7a45 (patch) | |
tree | 49830af75a1fc0a0ec2c634f060fb984908a7e38 /lib | |
parent | ccaba581c0cf8653f61ce212667eaa1cc6f0a28e (diff) | |
download | rails-efd950ae706cfbb55dffebd5d0c85e30acfd7a45.tar.gz rails-efd950ae706cfbb55dffebd5d0c85e30acfd7a45.tar.bz2 rails-efd950ae706cfbb55dffebd5d0c85e30acfd7a45.zip |
Use lazy-loaded factory method for site configuration
Diffstat (limited to 'lib')
-rw-r--r-- | lib/active_file/disk_controller.rb | 2 | ||||
-rw-r--r-- | lib/active_file/site.rb | 14 | ||||
-rw-r--r-- | lib/active_file/site/disk_site.rb (renamed from lib/active_file/sites/disk_site.rb) | 2 | ||||
-rw-r--r-- | lib/active_file/site/gcs_site.rb (renamed from lib/active_file/sites/gcs_site.rb) | 2 | ||||
-rw-r--r-- | lib/active_file/site/mirror_site.rb (renamed from lib/active_file/sites/mirror_site.rb) | 2 | ||||
-rw-r--r-- | lib/active_file/site/s3_site.rb (renamed from lib/active_file/sites/s3_site.rb) | 2 |
6 files changed, 12 insertions, 12 deletions
diff --git a/lib/active_file/disk_controller.rb b/lib/active_file/disk_controller.rb index b5a19fa5fc..f016c90fc5 100644 --- a/lib/active_file/disk_controller.rb +++ b/lib/active_file/disk_controller.rb @@ -10,7 +10,7 @@ class ActiveFile::DiskController < ActionController::Base private def decode_verified_key - ActiveFile::Sites::DiskSite::VerifiedKeyWithExpiration.decode(params[:id]) + ActiveFile::Site::DiskSite::VerifiedKeyWithExpiration.decode(params[:id]) end def disposition_param diff --git a/lib/active_file/site.rb b/lib/active_file/site.rb index eb72ef39d4..31640695d5 100644 --- a/lib/active_file/site.rb +++ b/lib/active_file/site.rb @@ -1,5 +1,12 @@ # Abstract class serving as an interface for concrete sites. class ActiveFile::Site + def self.configure(site, **options) + begin + require "active_file/site/#{site.to_s.downcase}_site" + ActiveFile::Site.const_get(:"#{site}Site").new(**options) + end + end + def initialize end @@ -36,10 +43,3 @@ class ActiveFile::Site raise NotImplementedError end end - -module ActiveFile::Sites -end - -require "active_file/sites/disk_site" -require "active_file/sites/gcs_site" -require "active_file/sites/s3_site" diff --git a/lib/active_file/sites/disk_site.rb b/lib/active_file/site/disk_site.rb index e5572073ed..1fa77029c7 100644 --- a/lib/active_file/sites/disk_site.rb +++ b/lib/active_file/site/disk_site.rb @@ -1,7 +1,7 @@ require "fileutils" require "pathname" -class ActiveFile::Sites::DiskSite < ActiveFile::Site +class ActiveFile::Site::DiskSite < ActiveFile::Site attr_reader :root def initialize(root:) diff --git a/lib/active_file/sites/gcs_site.rb b/lib/active_file/site/gcs_site.rb index f5f8696f56..c5f3d634cf 100644 --- a/lib/active_file/sites/gcs_site.rb +++ b/lib/active_file/site/gcs_site.rb @@ -1,6 +1,6 @@ require "google/cloud/storage" -class ActiveFile::Sites::GCSSite < ActiveFile::Site +class ActiveFile::Site::GCSSite < ActiveFile::Site attr_reader :client, :bucket def initialize(project:, keyfile:, bucket:) diff --git a/lib/active_file/sites/mirror_site.rb b/lib/active_file/site/mirror_site.rb index 051d139af1..65f28cd437 100644 --- a/lib/active_file/sites/mirror_site.rb +++ b/lib/active_file/site/mirror_site.rb @@ -1,4 +1,4 @@ -class ActiveFile::Sites::MirrorSite < ActiveFile::Site +class ActiveFile::Site::MirrorSite < ActiveFile::Site attr_reader :sites def initialize(sites:) diff --git a/lib/active_file/sites/s3_site.rb b/lib/active_file/site/s3_site.rb index e13b609881..7bb8197245 100644 --- a/lib/active_file/sites/s3_site.rb +++ b/lib/active_file/site/s3_site.rb @@ -1,6 +1,6 @@ require "aws-sdk" -class ActiveFile::Sites::S3Site < ActiveFile::Site +class ActiveFile::Site::S3Site < ActiveFile::Site attr_reader :client, :bucket def initialize(access_key_id:, secret_access_key:, region:, bucket:) |