Merge pull request #561 from basecamp/flavorjones/pure-storage-step-4
Complete the prod cutover to the Pure blob store.
This commit is contained in:
@@ -3,6 +3,6 @@ require_relative "production"
|
||||
Rails.application.configure do
|
||||
config.action_mailer.default_url_options = { host: "%{tenant}.37signals.works" }
|
||||
|
||||
# I couldn't figure out how to configure Pure to allow updates from Kevin's digital ocean instance.
|
||||
# Let's keep beta on local disk. See https://github.com/basecamp/fizzy/pull/557 for context.
|
||||
config.active_storage.service = :local
|
||||
end
|
||||
|
||||
@@ -31,7 +31,7 @@ Rails.application.configure do
|
||||
# config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
|
||||
|
||||
# Store uploaded files on the local file system (see config/storage.yml for options).
|
||||
config.active_storage.service = :mirror
|
||||
config.active_storage.service = :purestorage
|
||||
|
||||
# Mount Action Cable outside main process or domain.
|
||||
# config.action_cable.mount_path = nil
|
||||
|
||||
+4
-2
@@ -6,10 +6,11 @@ local:
|
||||
service: Disk
|
||||
root: <%= Rails.root.join("storage", "tenants", Rails.env, "%{tenant}", "files") %>
|
||||
|
||||
<% purestorage_env_name = Rails.env.beta? ? "staging" : Rails.env %>
|
||||
# We have "development", "staging", and "production" buckets configured. Note that we don't have a
|
||||
# "beta" bucket. (As of 2025-06-01.)
|
||||
purestorage:
|
||||
service: S3
|
||||
bucket: fizzy-<%= purestorage_env_name %>-activestorage
|
||||
bucket: fizzy-<%= Rails.env %>-activestorage
|
||||
endpoint: "https://storage.basecamp.com"
|
||||
ssl_verify_peer: false # FIXME: using self-signed cert internally
|
||||
force_path_style: true
|
||||
@@ -19,6 +20,7 @@ purestorage:
|
||||
access_key_id: <%= Rails.application.credentials.dig(:active_storage, :purestorage_service, :access_key_id) %>
|
||||
secret_access_key: <%= Rails.application.credentials.dig(:active_storage, :purestorage_service, :secret_access_key) %>
|
||||
|
||||
# TODO: remove this after we update existing blobs' service names to purestorage.
|
||||
mirror:
|
||||
service: Mirror
|
||||
primary: purestorage
|
||||
|
||||
@@ -16,7 +16,10 @@ def migrate(source_service_name, target_service_name)
|
||||
target_service = ActiveStorage::Blob.services.fetch(target_service_name)
|
||||
|
||||
ActiveStorage::Blob.find_each do |blob|
|
||||
if target_service.exist?(blob.key)
|
||||
if target_service.name.to_sym == blob.service_name.to_sym
|
||||
report[:skipped] += 1
|
||||
putc "-"
|
||||
elsif target_service.exist?(blob.key)
|
||||
report[:skipped] += 1
|
||||
putc "S"
|
||||
else
|
||||
@@ -31,7 +34,9 @@ def migrate(source_service_name, target_service_name)
|
||||
putc "E"
|
||||
end
|
||||
end
|
||||
# blob.update_attribute :service_name, target_service_name
|
||||
|
||||
# Update the service name of the blob.
|
||||
blob.update_column :service_name, target_service_name
|
||||
end
|
||||
|
||||
puts
|
||||
|
||||
Reference in New Issue
Block a user