2014-07-25 59 views
2

我創建一個帳戶對象factory和我設置這樣的名字:如何使用塊更改ruby中的執行上下文?

name { "#{Faker::Hacker.ingverb} #{Faker::Hacker.adjective} #{Faker::Hacker.noun}" } 

是否有使用塊來改變執行上下文,消除冗餘Faker::Hacker調用的方法嗎?我想結束這樣的事情:

name { Faker::Hacker { "#{ingverb} #{adjective} #{noun}" } } 

謝謝!

+0

http://stackoverflow.com/q/5851127/438992果殼:'綁定'是你的朋友 - 如果它真的值得。 –

回答

3

它看起來像您發送方法,一類/模塊,所以你的例子可使用的簡單改寫Module#class_eval方法:

name { Faker::Hacker.class_eval { "#{ingverb} #{adjective} #{noun}" } }

將調用傳遞給class_evalFaker::Hacker類的塊的方法。

+0

謝謝。這正是我所期待的。 – spinlock

0

不是一個完整的解決方案,根據您的問題,但少了很多類型:

h = Faker::Hacker 
name { "#{h.ingverb} #{h.adjective} #{h.noun}" } 
相關問題