私は立ち往生しています。簡単な画像アップロード システムを実装するために、carrierwave/fog を使用しています。これが私のアップローダーです:
class OfficeImagesUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
include CarrierWave::RMagick
# include CarrierWave::MiniMagick
# Choose what kind of storage to use for this uploader:
# storage :file
storage :fog
# Override the directory where uploaded files will be stored.
# This is a sensible default for uploaders that are meant to be mounted:
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
これが私のfog_initです:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => ENV['AWSKEY'], # required
:aws_secret_access_key => ENV['AWSSEC'], # required
:region => 'us-east-1' # optional, defaults to 'us-east-1'
}
# config.fog_directory = 'temp-cm' # required
config.fog_public = false # optional, defaults to true
# config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
# config.asset_host = 'https://assets.example.com' # optional, defaults to nil
end
CarrierWave.configure {|config| config.fog_directory = 'office-classifieds-development'} if Rails.env.development?
CarrierWave.configure {|config| config.fog_directory = 'office-classifieds-test'} if Rails.env.test?
CarrierWave.configure {|config| config.fog_directory = 'office-classifieds-production'} if Rails.env.production?
そして、これが私が画像をアップロードしたい画像モデルです:
class Image < ActiveRecord::Base
attr_accessible :office_listing_id, :image, :remote_image_url
belongs_to :office_listing
mount_uploader :image, OfficeImagesUploader
end
2 つの問題が発生します。やって画像を作ろうとすると
Image.create(画像: 'someurl.jpg')
画像が作成されず、画像属性に URL が入力されず、「nil を文字列に変換できません」というエラーが表示されます。
:image はアップロードされたファイルであるため、エラーが発生していると思います。ただし、同じことを試みて、画像を remote_image_url に置き換えると、次のエラーが発生します。
undefined method `defaults' for Excon:Module
これが何を意味するのかわかりません。考え?