ruby-on-rails – 如何从服务器目录中制作Paperclip流程文件?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何从服务器目录中制作Paperclip流程文件?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在服务器上的目录中的所有文件上运行Paperclip.基本上,我想允许用户将一些文件FTP到我的网络服务器,然后我可以手动运行rake任务让Paperclip处理所有文件(调整图像大小,更新数据库等).

我怎样才能做到这一点?

解决方法

我不确定我是否理解你的问题 – 你是要求远程运行rake任务还是如何导入图像?

在后一种情况下,有一个答案.

首先,你需要一些模型来保存图像和其他一些数据,如下所示:

  1. class Picture < ActiveRecord::Base
  2. has_attached_file :image,:styles => {
  3. :thumb => "100x100>",:big => "500x500>"
  4. }
  5. end

您可以在lib / tasks文件夹中创建简单的rake任务(您应该使用.rake扩展名命名该文件)

  1. namespace :import do
  2.  
  3. desc "import all images from SOURCE_DIR folder"
  4. task :images => :environment do
  5. # get all images from given folder
  6. Dir.glob(File.join(ENV["SOURCE_DIR"],"*")) do |file_path|
  7. # create new model for every picture found and save it to db
  8. open(file_path) do |f|
  9. pict = Picture.new(:name => File.basename(file_path),:image => f)
  10. # a side affect of saving is that paperclip transformation will
  11. # happen
  12. pict.save!
  13. end
  14.  
  15.  
  16. # Move processed image somewhere else or just remove it. It is
  17. # necessary as there is a risk of "double import"
  18. #FileUtils.mv(file_path,"....")
  19. #FileUtils.rm(file_path)
  20. end
  21. end
  22.  
  23. end

然后你可以从控制台手动调用rake任务,提供SOURCE_DIR参数,该参数将是服务器上的文件夹(它可以是真正的文件夹或安装的远程)

  1. rake import:images SOURCE_DIR=~/my_images/to/be/imported

如果您打算自动运行,我建议您使用Resque Scheduler gem.

更新:为了简单起见,我故意省略了异常处理

猜你在找的Ruby相关文章