aboutsummaryrefslogtreecommitdiffstats
path: root/lib/active_storage/service.rb
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2017-07-22 09:47:24 -0500
committerDavid Heinemeier Hansson <david@loudthinking.com>2017-07-22 09:47:24 -0500
commitd50679f4eefde1aca1ab71ba3c0109739cfdff3f (patch)
treeac9034fe7c4aa64cd5e90ecebc346d478917387c /lib/active_storage/service.rb
parent5b7c31c23a708de77b3d73b68aec0ba99c8be861 (diff)
downloadrails-d50679f4eefde1aca1ab71ba3c0109739cfdff3f.tar.gz
rails-d50679f4eefde1aca1ab71ba3c0109739cfdff3f.tar.bz2
rails-d50679f4eefde1aca1ab71ba3c0109739cfdff3f.zip
Move models and jobs to the app setup
Follow engine conventions more closely
Diffstat (limited to 'lib/active_storage/service.rb')
-rw-r--r--lib/active_storage/service.rb96
1 files changed, 0 insertions, 96 deletions
diff --git a/lib/active_storage/service.rb b/lib/active_storage/service.rb
deleted file mode 100644
index cba9cd9c83..0000000000
--- a/lib/active_storage/service.rb
+++ /dev/null
@@ -1,96 +0,0 @@
-require_relative "log_subscriber"
-
-# Abstract class serving as an interface for concrete services.
-#
-# The available services are:
-#
-# * +Disk+, to manage attachments saved directly on the hard drive.
-# * +GCS+, to manage attachments through Google Cloud Storage.
-# * +S3+, to manage attachments through Amazon S3.
-# * +Mirror+, to be able to use several services to manage attachments.
-#
-# Inside a Rails application, you can set-up your services through the
-# generated <tt>config/storage_services.yml</tt> file and reference one
-# of the aforementioned constant under the +service+ key. For example:
-#
-# local:
-# service: Disk
-# root: <%= Rails.root.join("storage") %>
-#
-# You can checkout the service's constructor to know which keys are required.
-#
-# Then, in your application's configuration, you can specify the service to
-# use like this:
-#
-# config.active_storage.service = :local
-#
-# If you are using Active Storage outside of a Ruby on Rails application, you
-# can configure the service to use like this:
-#
-# ActiveStorage::Blob.service = ActiveStorage::Service.configure(
-# :Disk,
-# root: Pathname("/foo/bar/storage")
-# )
-class ActiveStorage::Service
- class ActiveStorage::IntegrityError < StandardError; end
-
- extend ActiveSupport::Autoload
- autoload :Configurator
-
- class_attribute :logger
-
- class << self
- # Configure an Active Storage service by name from a set of configurations,
- # typically loaded from a YAML file. The Active Storage engine uses this
- # to set the global Active Storage service when the app boots.
- def configure(service_name, configurations)
- Configurator.build(service_name, configurations)
- end
-
- # Override in subclasses that stitch together multiple services and hence
- # need to build additional services using the configurator.
- #
- # Passes the configurator and all of the service's config as keyword args.
- #
- # See MirrorService for an example.
- def build(configurator:, service: nil, **service_config) #:nodoc:
- new(**service_config)
- end
- end
-
- def upload(key, io, checksum: nil)
- raise NotImplementedError
- end
-
- def download(key)
- raise NotImplementedError
- end
-
- def delete(key)
- raise NotImplementedError
- end
-
- def exist?(key)
- raise NotImplementedError
- end
-
- def url(key, expires_in:, disposition:, filename:)
- raise NotImplementedError
- end
-
- def url_for_direct_upload(key, expires_in:, content_type:, content_length:)
- raise NotImplementedError
- end
-
- private
- def instrument(operation, key, payload = {}, &block)
- ActiveSupport::Notifications.instrument(
- "service_#{operation}.active_storage",
- payload.merge(key: key, service: service_name), &block)
- end
-
- def service_name
- # ActiveStorage::Service::DiskService => Disk
- self.class.name.split("::").third.remove("Service")
- end
-end