Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rmagick陷入了一个无限循环,一次又一次地创建图像_Ruby On Rails_Ruby_Rmagick - Fatal编程技术网

Ruby on rails rmagick陷入了一个无限循环,一次又一次地创建图像

Ruby on rails rmagick陷入了一个无限循环,一次又一次地创建图像,ruby-on-rails,ruby,rmagick,Ruby On Rails,Ruby,Rmagick,我正在使用rmagick创建蒙太奇。在我提交请求后,它会陷入无限循环,请求会一次又一次地继续创建相同的映像,直到我手动重新启动服务器: class LineItem < ActiveRecord::Base has_many :images, as: :imageable, dependent: :destroy after_save :process private def process image_list = Magick::ImageList.new(

我正在使用
rmagick
创建蒙太奇。在我提交请求后,它会陷入无限循环,请求会一次又一次地继续创建相同的映像,直到我手动重新启动服务器:

class LineItem < ActiveRecord::Base
  has_many :images, as: :imageable, dependent: :destroy
  after_save :process

  private

  def process
    image_list = Magick::ImageList.new(*self.photos.split(','))
    montage = image_list.montage do
      self.geometry = "182x182+6+6"
      self.tile     = "4x3"
    end
    name = "#{self.id}_#{Time.now}.jpg"
    montage.write(name)
    images.build(source: File.open(name))
    save!
  end
class LineItem

知道为什么会发生这种情况,或者如何调试它吗

您的问题不在rmagick中,而是由于

after_save :process
然后在
过程中

save!

这将创建一个无限递归。

啊,当然!嗯。。。除了跳过保存中的回调之外,还有其他选项吗?可能在保存之前使用
:处理
,然后不需要使用
保存
在方法中,我实际上计划将其移动到后台进程中,但我希望在做任何其他事情之前先确保它工作正常。