配置Carrierwave与Amazon S3,托管在Heroku [英] Configuration for Carrierwave with Amazon S3, hosted on Heroku

查看:178
本文介绍了配置Carrierwave与Amazon S3,托管在Heroku的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

<一个href="https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku">https://github.com/carrierwaveuploader/carrierwave/wiki/How-to%3A-Make-Carrierwave-work-on-Heroku

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

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

这是正确的设置?

还有什么我需要做什么?

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

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

解决方案

你生成上传文件?

轨生成上传头像

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

更多信息<一个href="https://github.com/carrierwaveuploader/carrierwave">https://github.com/carrierwaveuploader/carrierwave在入门。

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

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

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

 类AmazonUploader&LT; 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 =&GT; [200,200]
  结束

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

我也建议你这个railcasts:

<一个href="http://railscasts.com/episodes/253-carrierwave-file-uploads">http://railscasts.com/episodes/253-carrierwave-file-uploads

<一个href="http://railscasts.com/episodes/383-uploading-to-amazon-s3">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

这篇关于配置Carrierwave与Amazon S3,托管在Heroku的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆