Ruby on rails Ruby向代码块(Proc)添加行

Ruby on rails Ruby向代码块(Proc)添加行,ruby-on-rails,ruby,metaprogramming,Ruby On Rails,Ruby,Metaprogramming,示例很简单,我需要Ruby1.8.7的解决方案 编辑 添加了Ramaze调用,以更好地解释编辑块的需要。我想要一种改变块的方法,这样我就可以在线程失败时包装在rescue块中并记录。原料药 用法 我想做的是在&block中添加几行代码,例如放置“世界在结尾,但动态。现实世界的实现是我有一个延迟线程创建的类,我想在延迟线程创建之前添加rescue块。这样,每当线程失败时,我就不需要挠头了 谢谢。事实证明,解决方案非常简单,只是没有立即查看块的经验。塞吉奥建议的东西 class Foo def

示例很简单,我需要Ruby1.8.7的解决方案

编辑 添加了
Ramaze
调用,以更好地解释编辑块的需要。我想要一种改变块的方法,这样我就可以在线程失败时包装在
rescue
块中并记录。原料药

用法

我想做的是在
&block
中添加几行代码,例如
放置“世界在结尾,但动态。现实世界的实现是我有一个延迟线程创建的类,我想在延迟线程创建之前添加
rescue
块。这样,每当线程失败时,我就不需要挠头了


谢谢。

事实证明,解决方案非常简单,只是没有立即查看块的经验。塞吉奥建议的东西

class Foo
  def self.execute(&block)
    Ramaze::defer(&wrap(&block))
  end

  private

  def self.wrap(&block)
    return lambda do
     begin
      yield
      rescue Exception => e
       Log.error "[ERROR IN THREAD] #{e.message}, #{e.backtrace}"
      end
    end
  end
end

我知道有一种宝石也能做到这一点,这也会很有帮助。现在似乎找不到。您可以将该进程包装在另一个进程中并调用该进程。为什么不在调用后调用puts呢?e、 g.
def self.execute(&block)block.call;加上"ho",;结束
或将块包装到另一块中…您可以修改Foo.execute吗?或者你需要覆盖它吗?编辑过的问题,这样可以更好地解释我需要编辑块。他想把它简化。
Foo.execute do
  puts "Hello!!!"
end
# => Hello!!!
class Foo
  def self.execute(&block)
    Ramaze::defer(&wrap(&block))
  end

  private

  def self.wrap(&block)
    return lambda do
     begin
      yield
      rescue Exception => e
       Log.error "[ERROR IN THREAD] #{e.message}, #{e.backtrace}"
      end
    end
  end
end