Ruby on rails Carrierwave处理的图像未上载到AWS S3

Ruby on rails Carrierwave处理的图像未上载到AWS S3,ruby-on-rails,amazon-s3,carrierwave,sidekiq,Ruby On Rails,Amazon S3,Carrierwave,Sidekiq,与此问题类似,但提供的解决方案没有解决我的问题 使用Railscast#383作为代码的基础: 使用carrierwave_direct将图像成功上载到S3。我想用sidekiq在后台处理图像,然后上传到S3 sidekiq worker无误地完成图像处理,但处理后的图像(:thumb和:large)存储在本地的public/uploads文件夹中 知道为什么处理后的图像没有上传到S3吗 上载程序: class ImageUploader < CarrierWave::Uploader::

与此问题类似,但提供的解决方案没有解决我的问题

使用Railscast#383作为代码的基础:

使用carrierwave_direct将图像成功上载到S3。我想用sidekiq在后台处理图像,然后上传到S3

sidekiq worker无误地完成图像处理,但处理后的图像(:thumb和:large)存储在本地的public/uploads文件夹中

知道为什么处理后的图像没有上传到S3吗

上载程序:

class ImageUploader < CarrierWave::Uploader::Base

include CarrierWave::MiniMagick

storage :fog

include CarrierWave::MimeTypes
process :set_content_type

include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper

version :thumb do
  process :resize_to_limit => [200, 200]
end

version :large do
  process :resize_to_limit => [600, 400]
end

def extension_white_list
   %w(jpg jpeg gif png)
end
end
initializers/fog.rb*根据对上述问题的回答添加了此选项

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => ENV["AWS_ACCESS_KEY_ID"],
    :aws_secret_access_key  => ENV["AWS_SECRET_ACCESS_KEY"],
   :region                 => 'us-east-1'
  }

 config.fog_directory = ENV["AWS_S3_BUCKET"]
 config.fog_public = true
 config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 
end

在我的uploaders文件夹中,我复制了我原来的uploader,并将其重命名为“image\u uploader\u file.rb”。然后我修改了原始版本“image_uploader.rb”以使用fog和S3。我假设carrierwave只使用“image_uploader.rb”,但它似乎同时加载了这两个文件。旧版本使用本地存储,因此carrierwave在本地存储图像。一旦我删除了'image\u uploader\u file.rb',处理后的图像就被正确地上传到S3。

你的配置/初始化器/carrierwave.rb是什么样子的?试着将你的bucket重命名为没有破折号或数字的,例如
Myawesomewebsitedcom
class PhotosController < ApplicationController

 def index
  @photos = Photo.all
  @uploader = Photo.new.image
  @uploader.success_action_redirect = new_photo_url
 end
.
. 
.
<%= direct_upload_form_for @uploader do |f| %>
  <p><%= f.file_field :image %></p>
  <p><%= f.submit "Upload Photo" %></p>
<% end %>
 CarrierWave.configure do |config|
   config.fog_credentials = {
    provider: "AWS",
    aws_access_key_id: ENV["AWS_ACCESS_KEY_ID"],
    aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"]
  }
  config.fog_directory = ENV["AWS_S3_BUCKET"]
end
CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => ENV["AWS_ACCESS_KEY_ID"],
    :aws_secret_access_key  => ENV["AWS_SECRET_ACCESS_KEY"],
   :region                 => 'us-east-1'
  }

 config.fog_directory = ENV["AWS_S3_BUCKET"]
 config.fog_public = true
 config.fog_attributes = {'Cache-Control' => 'max-age=315576000'} 
end