我正在使用rails new plugin my_plugin --mountable
这是相当有些工作要弄清楚,但它应该用carrierwave上传文件到S3,但它说好,但没有上传
Carrierwave用于生成rails g uploader photo
的上传者
该文件看起来像这样
# my_engine/app/uploaders/my_engine/photo_uploader.rb
# encoding: utf-8
module my_engine
class PhotoUploader < CarrierWave::Uploader::Base
# 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
end
end
该模型有一个mount:photo,PhotoUploader
module PdfGeneratorEngine
class Assemble < ActiveRecord::Base
attr_accessible :color, :photo, :qr_code_url, :text
mount_uploader :photo, PhotoUploader
end
end
我的CarrierWave配置文件是这个
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'MY_ACCES_KEY',
:aws_secret_access_key => 'MY_SECRET_KEY',
:provider => 'AWS',
:region => 'eu-west-1'
}
config.fog_directory = 'my.bucket.com'
config.fog_host = 'https://s3-eu-west-1.amazonaws.com/my.bucket.com'
config.storage = :fog
config.s3_use_ssl = true
config.fog_public = true
end
所以首先它开始在fog_host上尖叫,如果它是asset_host就可以了
接下来它的问题在于s3_use_ssl,而它是CarrierWave的github上的合并问题。但是主机已经被定义为https://所以我不明白为什么这条线是必要的。
之后它说'好了它已经完成了'当我尝试检查(带有deamon)文件时,那里什么都没有。
我错过了什么?或者CarrierWave和Rails可安装引擎有什么问题吗?
答案 0 :(得分:1)
在你的photo_uploader.rb
中评论存储:文件和取消注释存储:雾
# storage :file
storage :fog
- 看看你的fog.rb,它与这里给出的内容不一致
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS', # required
:aws_access_key_id => 'xxx', # required
:aws_secret_access_key => 'yyy', # required
:region => 'eu-west-1' # optional, defaults to 'us-east-1'
:hosts => 's3.example.com' # optional, defaults to nil
:endpoint => 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory = 'name_of_directory' # required
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
答案 1 :(得分:0)
好吧CarrierWave存在一些问题。
我已经快速设置了RightAws,现在它上传到S3,我可以从我的deamon找到它。
在我的上传器中我添加了
@s3 = RightAws::S3Interface.new('MY KEY', 'MY SECRET KEY')
@s3.put('my.bucket.com', assemble.photo.identifier ,params[:assemble][:photo])
感谢您对Nishant的帮助,CarrierWave将会更加流畅,更好,但目前无效。在他们的github中存在一个关于在Rails引擎中使用的问题。