Попробуйте fail
:
if ENV['SCALA_HOME'].nil? then
fail "Required environment variable SCALA_HOME was not set. Value can also be set in personal settings."
end
fail
создает исключение в рубине. Вы также можете увидеть его под названием raise
; они эквивалентны. Если вы не укажете тип, тип исключения будет RuntimeError
, как в вашем примере «Сбой компилятора».
Бонусный ответ: если вы хотите поместить эти проверки в функцию (как следует из первого комментария), вы можете создать каталог с именем tasks
на верхнем уровне вашего проекта, а затем поместить файл с .rake
расширение в нем. Определите свои функции там. Buildr загрузит все такие файлы перед проверкой вашего файла сборки.
Например, у вас может быть файл с именем tasks/helpers.rake
со следующим содержимым:
def initialize_environment
ENV['JAVA_HOME'] ||= Buildr.settings.user['java_home']
unless ENV['JAVA_HOME']
fail "Required environment variable JAVA_HOME was not set. Value can also be set in personal settings."
end
puts "JAVA_HOME = #{ENV['JAVA_HOME']}"
# etc.
end
(Примечание: я изменил несколько других деталей - unless
, интерполяцию строк - чтобы они стали более рубиново-идиоматическими. То, как вы это сделали, тоже было хорошо, если вы этого хотите.)
Тогда в верхней части вашего файла сборки вы можете получить следующее:
require 'buildr/scala'
initialize_environment
# etc.