【发布时间】:2013-03-09 21:23:13
【问题描述】:
如果我定期运行这个简单的 Ruby 代码,它可以正常工作:
class String
def add_two
self + "2"
end
end
puts "hello".add_two
它应该打印“hello2”。但这失败了:
:ruby
class String
def add_two
self + "2"
end
end
puts "hello".add_two
此代码产生错误:
NoMethodError at /
undefined method `add_two' for "hello":String
有什么想法吗?
(不确定这是否重要,但我将 HAML 与 Sinatra 一起使用,它在 Apache 上运行,带有 Passenger 模块。)
【问题讨论】:
-
你可以尝试在
puts "hello".add_two"之前添加puts "Content-type: text/html\n\n" -
你在遵循 MVC 架构吗?你为什么要这么做?
-
我觉得你真的不应该在视图中修补字符串
-
你做错了,真的 ;)
-
@AJcodez 和其他人:我知道这是不好的做法,我不会在实际程序中这样做,但我仍然想了解为什么这不起作用。是什么让 "monkey-patching" 字符串如此特别以至于它不应该在 HAML 中工作?