ruby-on-rails – 如何使用Sidekiq将文件上传到后台?

ruby-on-rails – 如何使用Sidekiq将文件上传到后台?,第1张

概述我正在开发一个Rails应用程序,允许您上传大型音乐文件.我想在后台上传这些内容,以便当您开始上传时,它会被移动到sidekiq工作人员,同时用户输入有关文件的元数据,例如曲目名称和艺术家等. 我能够按照这个railscast将图像处理移到后台: http://railscasts.com/episodes/383-uploading-to-amazon-s3?view=asciicast 但我无 我正在开发一个Rails应用程序,允许您上传大型音乐文件.我想在后台上传这些内容,以便当您开始上传时,它会被移动到sIDekiq工作人员,同时用户输入有关文件的元数据,例如曲目名称和艺术家等.

我能够按照这个railscast将图像处理移到后台:
http://railscasts.com/episodes/383-uploading-to-amazon-s3?view=asciicast

但我无法弄清楚如何将文件的实际上传移动到后台.我应该使用某种回调或SIDekiq方法吗?

有关于如何做这样的事情的资源吗?

这是我的歌曲模型:
https://gist.github.com/leemcalilly/5001583

我的歌曲控制器:
https://gist.github.com/leemcalilly/5001590

我的上传表格:
https://gist.github.com/leemcalilly/5001586

我的上传器(使用带wavewave_direct的载波到s3):
https://gist.github.com/leemcalilly/5001601

该代码可以上传到s3,但在文件上传时,浏览器会在Rails进程中占用.我更愿意将其转移到后台进程.我认为那里的sIDekiq代码实际上来自处理图像处理的Railscast,但我不太明白为什么图像处理在Railscast中工作.

非常感谢任何指向正确方向的帮助.

解决方法 您的TrackUploader类基本上需要一个带有参数的“perform”方法.在该方法中,输入逻辑来上传图像.

您还需要指定队列的名称(即track_uploader)

之后,您可以通过TrackUploader.perform_async(参数)将项添加到此工作队列.

您可以手动启动sIDekiq,或使用God,以确保它保持活力.

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    endend
总结

以上是内存溢出为你收集整理的ruby-on-rails – 如何使用Sidekiq将文件上传到后台?全部内容,希望文章能够帮你解决ruby-on-rails – 如何使用Sidekiq将文件上传到后台?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1275206.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存