问题标签 [delayed-paperclip]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 通过 S3 直接上传使用延迟回形针
我在直接上传到 S3 的同时使用延迟回形针。我的模型被称为Photo
,它的附件是image
。
使用 JavaScript 从照片表单将图像上传到 S3。该文件存储在 Paperclip 期望原始图像所在的位置,并且文件详细信息保存到隐藏字段中。提交表单时,这些属性将写入 Photo 模型:
image_file_name
image_file_size
image_content_type
因为单独编写这些属性似乎不足以触发 Delayed Paperclip 来处理图像,所以在Photo.save
我调用Photo.image.reprocess!
which 确实得到 DelayedPaperclip 以创建一个成功处理图像的新 Sidekiq 作业之后。
问题是,当我调用Photo.save
时PhotosController
,文件会从 S3 复制到temp
目录,然后再复制回 S3。这发生在工作之外并且阻塞:
为什么回形针将文件上下复制?
heroku - 运行延迟回形针和延迟作业的 Heroku 上的 Paperclip::Tasks 错误
当 Heroku 启动时,我收到错误:
使用延迟作业运行回形针和延迟回形针时。
ruby-on-rails-4 - delay_paperclip 使用 ActiveJob 而不是 Resque
我已将Delayed::Paperclip配置为在后台处理 Paperclip 附件。我安装并配置了 Resque,根据自述文件,Resque 现在应该处理后台任务:
确保您已启动并运行 Resque。作业将被分派到 :paperclip 队列,因此您可以正确分派您的工作人员。完全按照您的方式配置 resque 和您的工作人员。
然而,另一个用于运行后台任务的框架 Active Job 是作为 Rails 4.1/ActionMailer 的依赖项安装的,它从 Resque 中“窃取”了任务。
问题是 Active Job 似乎立即在同一个线程中运行 - 基本上它根本不在后台运行。
我检查了 Delayed::Paperclip 的代码,似乎已安装的后端有优先级:
当我切换它们并将 Resque 放在上面时,它就可以工作了。优先级似乎是硬编码的,但我认为如果是这样的话,我不能是唯一一个遇到这个问题的人。这是一个错误还是我错过了什么?
ruby-on-rails - 带有 ActiveUUID 的 ActiveJob::SerializationError
我收到以下错误:
使用这些宝石时:
- 活动用户界面
- 回形针
- 延迟作业
- 延迟回形针
这是我的实际模型代码:
所以我猜测错误来自activeuuid 或delayed_paperclip,因为ActiveJob 无法处理或识别对象。
有没有人知道如何解决这个问题?
ruby-on-rails-4 - Delayed_Paperclip + Sidekiq + Mongoid-Paperclip
我正在开发一个处理用户上传照片和视频的 Rails 4.1 引擎。我使用 Mongoid-Paperclip 来处理上传和 Paperclip-av-transcoder 将视频编码成多种格式。所有文件都存储在 S3 中。所有这些都可以正常工作,但正如您所料,对视频进行编码可能需要相当长的时间,因此下一步是在后台进行。我做了一些谷歌搜索,发现Delayed_Paperclip似乎可以满足我的需要。在那之后,Sidekiq似乎是处理后台处理的最佳选择。
现在的问题是,我不能让所有这些一起工作。运行我的单元测试我得到NoMethodError: undefined method 'process_in_background'
了,所以问题似乎出在 Delayed_Paperclip 上,尽管没有特殊设置。
这是引发问题的模型
我试过添加require "delayed_paperclip"
到lib/myengine/myengine.rb
文件中,但没有帮助。
关于 Sidekiq,我添加test_helper.rb
了以下内容:
请注意,我没有忘记运行bundle install
,Redis 已启动并运行。我正在使用 Mongoid,而不是活动记录。
我做错了什么?有没有人成功使用过这个设置?我应该尝试另一种宝石组合吗?
附加信息:
- Delayed_paperclip 2.9.1
- Mongoid 4.0.2
- Mongoid-Paperclip 0.0.9
- 回形针 4.2.1
- Paperclip-av-transcoder 0.6.4
- 导轨 4.1.9
- Sidekiq 3.5.0
ruby-on-rails-4 - Sidekiq - 工作卡在排队中
我有一个 Rails 4 应用程序。我在 sidekiq 中使用回形针和延迟回形针。后台作业正在被 sidekiq 拾取,但它只是永远挂在入队队列中。
这是我在sidekiq上看到的:
在我的用户模型中,我有:
过程文件.yml
我已经阅读了这个问题的所有相关问题,但仍然无法弄清楚这个问题。有人想吗?
谢谢。
paperclip - delay_paperclip 不在后台运行
我在 Rails 4.2 上使用Paperclip (v5.0.0) 和Delayed_Paperclip (v3) 的最新版本
除了 Delayed_Paperclip 不在后台处理文件外,一切正常:
用户文件.rb
现在这一切都有效,除了ActiveJob
Delayed_Paperclip 创建的,在同一个请求上立即运行。在初始请求之后,我在处理文件中是否缺少一些东西?
ruby-on-rails - 生产中 s3 缺少存储桶选项的延迟回形针
我正在尝试使用delayed_paperclip 在后台处理图像调整大小。这个过程在开发中有效,但在生产中,我在延迟工作的最后一个错误中得到了这个。
missing required :bucket option\n/home/server_username/project_folder_name/shared/bundle/ruby/2.2.0/gems/paperclip-4.3.0/lib/paperclip/storage/s3.rb:218:in 'bucket_name'...etc
在应用程序.rb
在我的班级文件中
上传到 s3 无需使用 delay_paperclip。我只是想使用这个库,这样人们就不必等待这些被上传/调整。我正在开发 Ubuntu14.04。使用 Capistrano 进行部署。
我看到存储桶应该在 s3_credentials 之外的几个地方,所以我把它移到了现在的位置。所以我已经在那里和 s3_credentials 内部进行了尝试——无论哪种方式都没有改变。
中等图像会立即上传并调整大小并且可以正常工作。
如果有一些我没有提供的信息,请告诉我。
ruby-on-rails-4 - Delayed::Job ffmpeg 在使用delayed_paperclip 处理大文件时挂起
我正在尝试使用delayed_job在后台处理大型视频和音频文件。在大多数情况下,一切正常。唯一遇到问题的时候是上传较大的文件(~>200MB)
应用程序/模型/userfile.rb
应用程序/模型/userfile_styles.rb
示例(第一个文件正在从第二个文件转换,第三个文件正在从第四个文件转换):
我已经尝试上传几次并使用不同的文件。总是在同一点附近被抓住。然而,当视频较小(~100-200MB)时,一切都很好。
这是正在运行的命令:
任何形式的调试帮助都会很棒。
注意:我复制了上面的命令并手动运行它,以便我可以看到来自 ffmpeg 的一些日志,并且工作完美。
ruby-on-rails - Paperclip Nginx 504 Gateway Time-out
I have a Rails 4 application that allows to upload videos using the jQuery Dropzone plugin and the paperclip gem. Each uploaded video is encoded into multiple formats and uploaded to Amazon S3 in the background using delayed_paperclip, av-transcoder and sidekiq gems.
All works fine with most videos, but with a higher size like 1.1GB after the upload reaches what seems like the end of the progress bar of the dropzone plugin it returns an Nginx 504 Gateway Time-out.
As far as server goes, the rails app runs on Nginx + Passenger on a couple of servers that are behind a load balancer (Nginx used here too). I do not have timeouts set in the upstream section of the load balancer, the client_max_body_size
is set to 2000M (both on the load balancer and servers), I've tried setting passenger_pool_idle_time
to a large value (600), that didn't help, I have also tried setting send_timeout
(600s), nothing made any difference.
Note: When making those changes, I did them on the host files of both servers as well as of the load balancer and always restarted nginx afterwards.
I've read also several answers regarding similar problems like this one and this one but still can't figure this out, google wasn't much more helpful either.
Some extra notes for those unfamiliar with the whole paperclip/delayed_paperclip process, the file is uploaded to the server and then the operation is done as far as the user is concerned, in the background the post processing of the videos (encoding/uploading to S3) is pushed to Redis as a job and Sidekiq processes it whenever it has time/resources.
What could be causing this issue? How can I debug this and solve it?
UPDATE
Thanks to Sergey's answer I was able to solve the issue. Since I was restricted to a specific version of Paperclip, I couldn't update it to the newest version that has the fix, therefore I'll leave here what I ended up doing.
In the engine that I use to handle the uploads I've added the following code in the engine_name.rb
file to override the methods from Paperclip that needed fixing: