- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个允许您上传大型音乐文件的 Rails 应用程序。我想在后台上传这些,这样当您开始上传时,它会在用户输入有关文件的元数据(例如轨道名称和艺术家等)时移动到 sidekiq 工作人员。
我能够按照这个 railscast 将图像处理移到后台:
http://railscasts.com/episodes/383-uploading-to-amazon-s3?view=asciicast
但我不太清楚如何将文件的实际上传移动到后台。我应该使用某种回调或 Sidekiq 方法吗?
有没有关于如何做这样的事情的资源?
这是我的歌曲模型:
https://gist.github.com/leemcalilly/5001583
我的歌曲 Controller :
https://gist.github.com/leemcalilly/5001590
我的上传表格:
https://gist.github.com/leemcalilly/5001586
我的上传者(使用carrierwave和carrierwave_direct到s3):
https://gist.github.com/leemcalilly/5001601
该代码可以上传到 s3,但在文件上传时,浏览器会绑定(bind)在 Rails 进程中。我更愿意将其移至后台进程。我认为那里的sidekiq 代码确实来自处理图像处理的Railscast,但我不太明白为什么图像处理在该Railscast 中工作。
非常感谢任何指向正确方向的帮助。
最佳答案
您的 TrackUploader 类基本上需要一个带有参数的“执行”方法。在该方法中,输入上传图像的逻辑。
您还需要指定队列的名称(即 track_uploader)
之后,您可以通过 TrackUploader.perform_async(argument) 将项目添加到此工作队列。
您可以手动启动 sidekiq,或使用上帝,以确保它保持活力。
class TrackUploader < CarrierWave::Uploader::Base
include Sidekiq::Worker
sidekiq_options :queue => :track_uploader
include Sprockets::Helpers::RailsHelper
include Sprockets::Helpers::IsolatedHelper
include CarrierWaveDirect::Uploader
# Recommended for use with fog
include CarrierWave::MimeTypes
process :set_content_type
def extension_white_list
%w(mp3 m4a wav aiff flac)
end
def perform(argument)
#do the actual uploading here
end
end
关于ruby-on-rails - 如何使用 Sidekiq 将文件上传推送到后台?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14993790/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!