【发布时间】:2017-09-03 19:57:18
【问题描述】:
我已经完成了所有答案,以使我的视频上传到 S3 工作,但它们不起作用。我不断收到错误未初始化常量 Paperclip::Storage::S3::Aws。
我希望你能帮我解决这个问题。
宝石文件
gem 'simple_form', '~> 3.4'
gem 'haml', '~> 4.0', '>= 4.0.7'
gem 'coffee-script-source', '1.8.0'
gem 'bootstrap-sass', '~> 3.3', '>= 3.3.7'
gem 'paperclip'
gem 'carrierwave'
gem "paperclip-ffmpeg", "~> 1.0.1"
gem 'paperclip-av-transcoder'
gem 'aws-sdk', '~> 1.6'
gem "figaro"
config\s3.yml
AWS_ACCESS_KEY_ID: xxx
AWS_SECRET_ACCESS_KEY: xxx
S3_BUCKET_NAME: xxx
models\video.rb
class Video < ApplicationRecord
has_attached_file :clip, styles: {
medium: {
:geometry => "640x480",
:format => 'mp4'
},
thumb: { :geometry => "160x120",
:format => 'jpeg',
:time => 10}
},
processors: [:transcoder],
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml"
validates_attachment :clip,
content_type: { content_type: ['application/x-shockwave-flash', 'application/x-shockwave-flash', 'application/flv', 'video/x-flv']}
before_post_process :skip_for_audio
def skip_for_audio
! %w(audio/ogg application/ogg).include?(asset_content_type)
end
before_post_process :image?
def image?
!(data_content_type =~ /^image.*/).nil?
end
end
Videos_controller.rb
class VideosController < ApplicationController
def index
@videos = Video.all
@video = Video.order('created_at')
end
def new
@video = Video.new
end
def create
@video = Video.new(videos_params)
if @video.save
flash[:success] = "The step was added!"
redirect_to root_path
else
render 'New'
end
end
def destroy
@video = Video.find(params[:id])
@video.destroy
flash[:success] = "The step was destroyed."
redirect_to root_path
end
private
def videos_params
params.require(:video).permit(:title, :description, :clip)
end
end
初始化程序\paperclip.rb
paperclip_defaults = Rails.application.config_for :paperclip
paperclip_defaults.symbolize_keys!
Paperclip::Attachment.default_options.merge! paperclip_defaults
初始化程序\aws.rb
AWS.config(
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY']
)
S3_BUCKET = AWS::S3.new.buckets[ENV['S3_BUCKET']]
【问题讨论】:
-
你的回形针和 AWS 的初始化器是什么样子的?
-
这是回形针 paperclip_defaults = Rails.application.config_for :paperclip paperclip_defaults.symbolize_keys 的那个!回形针::Attachment.default_options.merge! paperclip_defaults 而这是 aws AWS.config( :access_key_id => ENV['AWS_ACCESS_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'] ) S3_BUCKET = AWS::S3.new.buckets[ENV['S3_BUCKET' ]]
-
你能用回形针默认配置更新你的问题吗?
-
我刚刚更新了两个initilizers + key和bucket的问题都存储在s3.yml中
-
我很确定这与您的 aws-sdk gem 版本有关。试试这个
gem 'aws-sdk', '< 2.0'
标签: ruby-on-rails ruby amazon-web-services amazon-s3 paperclip