Как сделать вызов функции, который происходит только один раз в Ruby / Rails - PullRequest
1 голос
/ 12 августа 2010

Gem / плагин, который я использую для поддержки своего набора тестов, вызывает некоторые команды GNU, которые заставляют оболочку Windows перевернуться и умереть Я могу переписать эти функции с помощью обхода следующим образом:

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 ]

4 голосов
/ 13 августа 2010

идиоматический рубиновый способ справиться с этим - запомнить его

@@warning_said ||= "warning"
3 голосов
/ 12 августа 2010

Это метод в рубине. </rant>. Используйте переменную класса, такую ​​как @@warning_said, и проверьте ее. Ака

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

Я не совсем уверен, в какой области вы работаете, но это должно сделать это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...