Module: ArchiveStorage
- Defined in:
- lib/archive_storage.rb,
lib/archive_storage/model.rb,
lib/archive_storage/errors.rb,
lib/archive_storage/policy.rb,
lib/archive_storage/planner.rb,
lib/archive_storage/railtie.rb,
lib/archive_storage/storage.rb,
lib/archive_storage/version.rb,
lib/archive_storage/enqueuer.rb,
lib/archive_storage/migrator.rb,
lib/archive_storage/registry.rb,
lib/archive_storage/verifier.rb,
lib/archive_storage/scheduler.rb,
lib/archive_storage/adapters/s3.rb,
lib/archive_storage/plan_result.rb,
lib/archive_storage/stored_file.rb,
lib/archive_storage/mount_config.rb,
lib/archive_storage/storage_rule.rb,
lib/archive_storage/configuration.rb,
lib/archive_storage/jobs/queue_job.rb,
lib/archive_storage/migration_rate.rb,
lib/archive_storage/policy_builder.rb,
lib/archive_storage/storage_config.rb,
lib/archive_storage/adapters/memory.rb,
lib/archive_storage/duration_parser.rb,
lib/archive_storage/schedule_config.rb,
lib/archive_storage/adapters/metadata.rb,
lib/archive_storage/jobs/migration_job.rb,
lib/archive_storage/models/file_record.rb,
lib/archive_storage/adapters/filesystem.rb,
lib/archive_storage/verification_result.rb,
lib/archive_storage/jobs/sidekiq_queue_worker.rb,
lib/generators/archive_storage/install_generator.rb,
lib/archive_storage/jobs/sidekiq_migration_worker.rb
Defined Under Namespace
Modules: Adapters, CarrierWave, Jobs, Model, Models
Classes: Candidate, Configuration, DurationParser, Enqueuer, InstallGenerator, MigrationRate, Migrator, MountConfig, PlanResult, Planner, Policy, PolicyBuilder, Railtie, Registry, ScheduleConfig, Storage, StorageConfig, StorageRule, StoredFile, VerificationResult, Verifier
Constant Summary
collapse
- Error =
Class.new(StandardError)
- ConfigurationError =
Class.new(Error)
- NotFoundError =
Class.new(Error)
- VerificationError =
Class.new(Error)
- RegistryUnavailableError =
Class.new(Error)
- VERSION =
"0.1.0"
Class Attribute Summary collapse
Class Method Summary
collapse
Class Attribute Details
.configuration ⇒ Object
27
28
29
|
# File 'lib/archive_storage.rb', line 27
def configuration
@configuration ||= Configuration.new
end
|
.registry ⇒ Object
44
45
46
|
# File 'lib/archive_storage.rb', line 44
def registry
@registry ||= Registry.new
end
|
Class Method Details
.adapter(name) ⇒ Object
40
41
42
|
# File 'lib/archive_storage.rb', line 40
def adapter(name)
configuration.adapter(name)
end
|
31
32
33
|
# File 'lib/archive_storage.rb', line 31
def configure
yield configuration
end
|
.good_job_cron ⇒ Object
81
82
83
84
85
|
# File 'lib/archive_storage.rb', line 81
def good_job_cron
configuration.schedules.each_with_object({}) do |schedule, entries|
entries[schedule.entry_name] = schedule.good_job_entry
end
end
|
.install_good_job_cron!(rails_config: nil) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/archive_storage/scheduler.rb', line 15
def install_good_job_cron!(rails_config: nil)
entries = good_job_cron
return false if entries.empty?
config = rails_config || rails_application_config
return false unless config&.respond_to?(:good_job)
good_job_config = config.good_job
good_job_config.cron = cron_hash(good_job_config.cron).merge(entries)
true
end
|
.install_scheduled_jobs!(rails_config: nil) ⇒ Object
5
6
7
8
9
10
11
12
13
|
# File 'lib/archive_storage/scheduler.rb', line 5
def install_scheduled_jobs!(rails_config: nil)
if configuration.job_backend.to_sym == :sidekiq
install_sidekiq_schedules!
else
return false unless good_job_available?
install_good_job_cron!(rails_config: rails_config)
end
end
|
.install_sidekiq_cron! ⇒ Object
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
# File 'lib/archive_storage/scheduler.rb', line 31
def install_sidekiq_cron!
require "sidekiq"
require "sidekiq-cron"
require_relative "jobs/sidekiq_queue_worker"
::Sidekiq.configure_server do |config|
config.on(:startup) do
entries = ArchiveStorage.sidekiq_cron
::Sidekiq::Cron::Job.load_from_hash(entries) if entries.any?
end
end
true
rescue LoadError
false
end
|
.install_sidekiq_scheduler! ⇒ Object
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/archive_storage/scheduler.rb', line 48
def install_sidekiq_scheduler!
require "sidekiq"
require "sidekiq-scheduler"
require_relative "jobs/sidekiq_queue_worker"
::Sidekiq.configure_server do |config|
config.on(:startup) do
entries = ArchiveStorage.sidekiq_cron
entries.each { |name, entry| ::Sidekiq.set_schedule(name, entry) }
reload_sidekiq_scheduler if entries.any?
end
end
true
rescue LoadError
false
end
|
.install_sidekiq_schedules! ⇒ Object
27
28
29
|
# File 'lib/archive_storage/scheduler.rb', line 27
def install_sidekiq_schedules!
install_sidekiq_cron! || install_sidekiq_scheduler!
end
|
.policy_for_mount(model, mounted_as) ⇒ Object
68
69
70
71
|
# File 'lib/archive_storage.rb', line 68
def policy_for_mount(model, mounted_as)
configuration.find_mount(model, mounted_as)&.policy ||
model_policy(model, mounted_as)
end
|
.policy_for_record(record_type, mounted_as) ⇒ Object
73
74
75
|
# File 'lib/archive_storage.rb', line 73
def policy_for_record(record_type, mounted_as)
policy_for_mount(record_type, mounted_as)
end
|
.policy_for_uploader(uploader) ⇒ Object
63
64
65
66
|
# File 'lib/archive_storage.rb', line 63
def policy_for_uploader(uploader)
mount_policy_for_uploader(uploader) ||
(uploader.class.archive_storage_policy if uploader.class.respond_to?(:archive_storage_policy))
end
|
.register_mount(model, mounted_as, uploader:, policy:) ⇒ Object
52
53
54
|
# File 'lib/archive_storage.rb', line 52
def register_mount(model, mounted_as, uploader:, policy:)
configuration.mount(model, mounted_as, uploader: uploader, policy: policy)
end
|
.register_uploader(uploader_class) ⇒ Object
48
49
50
|
# File 'lib/archive_storage.rb', line 48
def register_uploader(uploader_class)
uploaders << uploader_class
end
|
.reset_configuration! ⇒ Object
35
36
37
38
|
# File 'lib/archive_storage.rb', line 35
def reset_configuration!
@configuration = Configuration.new
@registry = Registry.new
end
|
.sidekiq_cron ⇒ Object
87
88
89
90
91
|
# File 'lib/archive_storage.rb', line 87
def sidekiq_cron
configuration.schedules.each_with_object({}) do |schedule, entries|
entries[schedule.entry_name.to_s] = schedule.sidekiq_cron_entry
end
end
|
.uploaders ⇒ Object
77
78
79
|
# File 'lib/archive_storage.rb', line 77
def uploaders
@uploaders ||= []
end
|
.wire_carrierwave_uploader!(uploader_class) ⇒ Object
56
57
58
59
60
61
|
# File 'lib/archive_storage.rb', line 56
def wire_carrierwave_uploader!(uploader_class)
return unless uploader_class
uploader_class.include(CarrierWave) unless uploader_class < CarrierWave
uploader_class.storage(:archive_storage) if uploader_class.respond_to?(:storage)
end
|