配置Carrierwave与Amazon S3,托管在HerokuAmazon、Carrierwave、Heroku

由网友(忘亦难.)分享简介:我已经按照从Carrierwave的部署说明与如何部署在Heroku上使用Amazon S3的一个Rails应用程序:https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku我已经添...

我已经按照从Carrierwave的部署说明与如何部署在Heroku上使用Amazon S3的一个Rails应用程序:

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

我已经添加了额外的行config.ru和创建的配置/初始化/ carrierwave.rb文件,但没有成功。

下面是carrierwave初始化,有删节键。

这是正确的设置?

还有什么我需要做什么?

任何一步一步的指导,以帮助我实现这个?

  CarrierWave.configure办|配置|
config.fog_credentials = {
:供应商=> AWS,要求#
:aws_access_key_id =>绝密,要求#
:aws_secret_access_key =>绝密,要求#
:地区=> 欧盟 - 西-1',#可选,默认为美国 - 东 -  1'
:主机=> s3.example.com',#可选,默认为无
:端点=> https://s3.example.com:8080#可选,默认为无
}
config.fog_directory ='myawsbucket'#所需
config.fog_public = FALSE#可选,默认为true
config.fog_attributes = {'的Cache-Control'=>最大年龄= 315576000'}#可选,默认为{}
结束
 

解决方案

你生成上传文件?

轨生成上传头像

这会产生这样的文件: 应用程序/上传者/ avatar_uploader.rb     类AvatarUploader< CarrierWave ::上传::基地      存储:文件     结束

更多信息https://github.com/carrierwaveuploader/carrierwave在入门。

S3静态托管

这是我的文件 配置/初始化/ carrierwave.rb

  CarrierWave.configure办|配置|
  config.fog_credentials = {
    :供应商=> AWS,
    :aws_access_key_id => 绝密,
    :aws_secret_access_key => 绝密
  }
  config.fog_directory =myawsbucket
结束
 

应用程序/上传者/ amazon_uploader.rb

 类AmazonUploader< CarrierWave ::上传::基地
  包括CarrierWave :: MiniMagick

  包括链轮::助手:: RailsHelper
  包括链轮::助手:: IsolatedHelper

  存储:雾

  包括CarrierWave :: MIMETYPES
  过程:set_content_type

  高清store_dir
    上传/#{model.class.to_s.underscore} / {#} mounted_as /#{model.id}
  结束

  版本:user_thumb做
    过程:resize_to_limit => [200,200]
  结束

  高清extension_white_list
    %W(JPG JPEG GIF PNG)
  结束
结束
 

我也建议你这个railcasts:

http://railscasts.com/episodes/253-carrierwave-file-uploads

http://railscasts.com/episodes/383-uploading-to-amazon-s3

I've followed the deployment instructions from Carrierwave with how to deploy on Heroku for a Rails app using Amazon S3:

https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

I've added the extra line to config.ru and created the config/initializers/carrierwave.rb file, but no success.

Below is the carrierwave initializer, with keys redacted.

Is this correctly setup?

What else do I need to do?

Any step-by-step guides to help me implement this?

CarrierWave.configure do |config|
config.fog_credentials = {
:provider               => 'AWS',                        # required
:aws_access_key_id      => REDACTED,                     # required
:aws_secret_access_key  => REDACTED,                     # required
:region                 => 'eu-west-1',                  # optional, defaults to 'us-east-1'
:host                   => 's3.example.com',             # optional, defaults to nil
:endpoint               => 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory  = 'myawsbucket'                  # required
config.fog_public     = false                                   # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'}  # optional, defaults to {}
end

解决方案

Did you generate the uploader file?

rails generate uploader Avatar

This will generate a file like this: app/uploaders/avatar_uploader.rb class AvatarUploader < CarrierWave::Uploader::Base storage :file end

More info https://github.com/carrierwaveuploader/carrierwave in the Getting started.

This are my files config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.fog_credentials = {
    :provider               => 'AWS',
    :aws_access_key_id      => 'REDACTED',
    :aws_secret_access_key  => 'REDACTED'
  }
  config.fog_directory  = "myawsbucket"
end

app/uploaders/amazon_uploader.rb

class AmazonUploader < CarrierWave::Uploader::Base
  include CarrierWave::MiniMagick

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

  storage :fog

  include CarrierWave::MimeTypes
  process :set_content_type

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

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

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

I also recommend you this railcasts:

http://railscasts.com/episodes/253-carrierwave-file-uploads

http://railscasts.com/episodes/383-uploading-to-amazon-s3

阅读全文

相关推荐

最新文章