I keep getting
ActiveStorage::FileNotFoundError (ActiveStorage::FileNotFoundError):
app/models/service.rb:24:in `process_images'
When trying to load an image into ImageProcessing::MiniMagick using
ImageProcessing::MiniMagick.source(self.image.download)
I have also tried
ImageProcessing::MiniMagick.source(self.image)
ImageProcessing::MiniMagick.source(self.image.attachment)
ImageProcessing::MiniMagick.source(self.image.attachment.download)
ImageProcessing::MiniMagick.source(self.image.blob)
ImageProcessing doesn't like those as its looking for a url so I tried using a url as well like this
url = Rails.application.routes.url_helpers.rails_blob_path(self.image, only_path: true) and passing that in instead of self.image
When I do that I get the error
failed with error:
convert: unable to open image `rails/active_storage/blobs/foo...`
Can someone please steer me in the right direction.
here is the relevant part of my Model as it looks now.
class Service < ApplicationRecord
has_one_attached :image, dependent: :destroy
has_one_attached :featured_image, dependent: :destroy
after_create :process_images
after_save :process_images
private
def process_images
url = Rails.application.routes.url_helpers.rails_blob_path(self.image, only_path: true)
pipeline1 = ImageProcessing::MiniMagick.source(url)
#can't continue until I load an image
end
end
I have also called the method from the controller. I made the model method not private and called it and it solved the nil attachment issue. The following but then I get this error.
ArgumentError (string contains null byte): flagged at this line.
pipeline1.resize_to_limit(400,400).convert("jpg").call
All I'm trying to do is resize images when the instance is created or updated and then save the processed image as the main attachment.