use*_*480 2 ruby-on-rails-3 carrierwave ruby-on-rails-3.1
我正在使用carrierwave和carrierwave背景资料(https://github.com/lardawge/carrierwave_backgrounder)延迟作业在后台上传文件.我尝试上传我的文件,上传成功,我可以看到作业在背景,但我不能看到使用延迟工作和没有使用延迟工作的任何差异.执行没有延迟工作需要相同的时间,因为它需要延迟工作.不知道出了什么问题PLZ help.Thanks提前.
这是我的上传者
# encoding: utf-8
class AvatarUploader < CarrierWave::Uploader::Base
# Include RMagick or MiniMagick support:
# include CarrierWave::RMagick
# include CarrierWave::MiniMagick
include ::CarrierWave::Backgrounder::Delay
include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper
# 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
def cache_dir
""
end
# Provide a default URL as a default if there hasn't been a file uploaded:
def default_url
"rails.png"
end
end
Run Code Online (Sandbox Code Playgroud)
config/initializers/carrierwave_backgrounder.rb中的carrierwave backgrounder文件
CarrierWave::Backgrounder.configure do |c|
c.backend :delayed_job, queue: :carrierwave
end
Run Code Online (Sandbox Code Playgroud)
发布模型
class Post < ActiveRecord::Base
attr_accessible :description , :avatar, :remote_avatar_url
mount_uploader :avatar, AvatarUploader
process_in_background :avatar
validates_presence_of :description
end
Run Code Online (Sandbox Code Playgroud)
后控制器动作
def create
@post = Post.new(params[:post])
respond_to do |format|
if @post.save
format.html { redirect_to @post, notice: 'Post was successfully created.' }
format.json { render json: @post, status: :created, location: @post }
else
format.html { render action: "new" }
format.json { render json: @post.errors, status: :unprocessable_entity }
end
end
end
Run Code Online (Sandbox Code Playgroud)
这是我的观点
<%= form_for(@post) do |f| %>
<% if @post.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@post.errors.count, "error") %> prohibited this post from being saved:</h2>
<ul>
<% @post.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :description %><br />
<%= f.text_area :description %>
</div>
<div class="field">
<%= f.file_field :avatar %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
Run Code Online (Sandbox Code Playgroud)
Taa*_*avo 14
CarrierWave Backgrounder不在后台进行初始文件传输.它可以完成两件事:
process_in_background让后台任务处理"处理",这就是carrierwave调用它调整图像大小,更改格式,生成缩略图以及进行其他自定义操作的步骤.原始图像仍像往常一样"存储"(如下所述).
store_in_background 让后台任务处理"存储",这就是carrierwave将上传的图像移动到本地磁盘上的最终位置的步骤,或者如果您使用雾,则将其移动到远程服务器(如S3)上.
您已将模型配置为process_in_background,但您的上传器未配置为执行任何处理,因此您没有按预期进行任何更改.如果您愿意,您也可以配置您的模型store_in_background,但由于您使用的是本地文件存储(文件副本通常非常快),这对您的应用程序基本上没有影响.
有关处理和存储的更多信息,请参阅Carrierwave自述文件.
| 归档时间: |
|
| 查看次数: |
2833 次 |
| 最近记录: |