2010-08-12 26 views
1

宝石/插件,我使用的是支持我的测试套件调用导致Windows外壳翻身和死亡一些GNU命令只发生一次。我可以用这种方式用旁路重写这些函数:如何使一个函数调用中的Ruby/Rails

def get_rake_output(task) 
    if RUBY_PLATFORM.include? 'mingw' 
    puts 'Skipped since OS is Windows. Run the test suite on a UNIX-like shell.' 
    '' 
    else 
    `./rake --silent #{task}` 
    end 
end 

当然,这会在每次调用函数时打印消息。我如何最好确保它只显示一次?

+3

使用实例变量记住该消息是否已经被显示? – 2010-08-12 19:14:45

回答

3

这是方法的红宝石。 </rant>。 使用类变量一样@@warning_said和检查的那一个。又名

puts "Ruby does not like Windows here" unless @@warning_said 
@@warning_said = true 

我并不清楚你在什么范围内操作,但应该这样做。

+0

这按理说。谢谢!我最初使用全局变量,但这更有意义。当然,类变量需要被初始化。 – 2010-08-12 20:28:21

3

的idomatic红宝石的方式来处理这个问题是memoize的它

@@warning_said ||= "warning" 
+2

+1提字memoize的。 – 2010-08-12 23:11:04

+0

什么memoize的意思吗? – 2018-02-22 20:44:21

+0

https://www.justinweiss.com/articles/4-simple-memoization-patterns-in-ruby-and-one-gem/ – 2018-02-26 03:53:11

相关问题