Solidus.io ve Active Storage Digitalocean Space

Selam Arkadaşlar solidus.io ile bir e ticaret uygulaması yaptım.sistem ürün resimlerini aws S3 benzeri digitalocean space adında bir sistemde sakladım ürün resmini ilk yüklediğimde resim yolu public olurken belli bir zaman sonra ürün resmi digitalocean tarafında erişim engeli veriyor.


Bu şekilde problem nedir acaba.Cloud tarafında fly.io kullanıyorum Active Storage tarafında yukarıda belirttiğim gibi digital ocean space’i seçtim.

Selam :wave:

İlk yüklediğin zaman görebiliyor musun? Ayrıca, storage.yml ve CORS detaylarını da paylaşbilir misin? Sorunun ikisinden birisinde olma ihtimali yüksek. :slight_smile:

storage.yml:

test:
  service: Disk
  root: <%= Rails.root.join("tmp/storage") %>

local:
  service: Disk
  root: <%= Rails.root.join("storage") %>

# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
digitalocean:
   service: S3
   endpoint: https://nyc3.digitaloceanspaces.com
   access_key_id: <%= Rails.application.credentials.dig(:digitalocean, :access_key_id) %>
   secret_access_key: <%= Rails.application.credentials.dig(:digitalocean, :secret_access_key) %>
   region: nyc3
   bucket: tesetturgiyimson

Cors ayarı:

evet ilk yüklendiğinde görünüyor sonra fotonun yolu belli bir süre sonra access denied oluyor

Selam,

ilk yüklediğimde resim yolu public olurken bunun gercekten boyle oldugunu kontrol etmen gerekebilir. Ekran goruntusunden anlasilmiyor ancak resmin ilk asamada gorunur olup sonra olmamasi ulastigin kaynak url’in zaman imzali bir url oldugunu belirtiyor gibi geldi bana. Paylastigin storage.yml dosyasinda da public ayari olmadigi icin bu durum dogrulaniyor. Cozum olarak ya resmi render ettigin yerde her renderda yeni bir url uretmen gerekir (signed url) ya da dosyayi public yapman.

By default, Active Storage assumes private access to services. This means generating signed, single-use URLs for blobs. If you’d rather make blobs publicly accessible, specify public: true in your app’s config/storage.yml. (kaynak)

Belki su bolume tekrar bir goz atip kullanimini degerlendirmen yardimci olabilir. Active Storage Overview — Ruby on Rails Guides

Selam :wave:

Demirhan’ın da bahsettiği gibi ilk olarak storage.yml'ı güncellemen gerekiyor. Kritik opsiyon public: true. Bunu eklemediğin sürece üretilen URL public olmayacak.

Ayrıca, fotoğrafları uygulaman üzerinden yüklüyorsan “Allow Methods”'da PUT iznine de ihtiyacın var hem de “Allowed Headers”'a * demeye (origin gibi).

Çok teşekkür ederim çözüldü.

2 Beğeni