Ruby on rails Ruby向代码块(Proc)添加行
示例很简单,我需要Ruby1.8.7的解决方案 编辑 添加了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
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