如何在Ruby / Rails中进行只发生一次的函数调用

时间:2010-08-12 19:06:09

标签: ruby-on-rails ruby

我用来支持我的测试套件的gem /插件调用了一些GNU命令,导致Windows shell翻转并死掉。我可以用这种方式用旁路重写这些函数:

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

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

2 个答案:

答案 0 :(得分:4)

用于处理此问题的idomatic ruby​​方法是记住它

@@warning_said ||= "warning"

答案 1 :(得分:3)

这是ruby中的方法</rant>。 使用类@@warning_said之类的类变量并检查该变量。又名

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

我并不确定你在哪个范围内操作,但是应该这样做。