2010-12-15 4 views
0

私は2つの異なる環境(Windows XPとLinux)でBuildrを実行するので、ローカルのJavaとScalaのインストールは別の場所にあります。Buildrを正常に中止するにはどうすればよいですか?

require 'buildr/scala' 
# Can I put these checks on a function ? How ? 
ENV['JAVA_HOME'] ||= Buildr.settings.user['java_home'] 
if ENV['JAVA_HOME'].nil? then 
    puts "Required environment variable JAVA_HOME was not set. Value can also be set in personal settings." 
    Process.exit 1 
end 
puts 'JAVA_HOME = ' + ENV['JAVA_HOME'] 

ENV['SCALA_HOME'] ||= Buildr.settings.user['scala_home'] 
if ENV['SCALA_HOME'].nil? then 
    puts "Required environment variable SCALA_HOME was not set. Value can also be set in personal settings." 
    Process.exit 1 
end 
puts 'SCALA_HOME = ' + ENV['SCALA_HOME'] 

puts 'Scala version: ' + Scala.version 

define "HelloWorld" do 
    puts 'Hello World !' 
end 

しかし、どのように、それはこの種のメッセージで終了するように、私はBuildrを終了します:私は、環境変数が設定されていることを確認するには、次の練習を持っている

Buildr aborted! 
RuntimeError : Scala compiler crashed: 
#<NullPointerException: unknown exception> 
(See full trace by running task with --trace) 

を私は(例外をスローする必要がありますはいの場合は、Rubyでそれを行う方法)

答えて

3

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になります。

ボーナス回答:これらの小切手を関数に入れたい場合(最初のコメントのコメントから推測されるように)、プロジェクトの最上位にという名前のディレクトリを作成してから、.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 - より多くのルビーidomaticする方法を。 。すべての私の質問に回答

require 'buildr/scala' 
initialize_environment 
# etc. 
+0

:あなたはそれを好むなら、それは、あまりにも、大丈夫だった)

を次に、あなたのビルドファイルの先頭には、これを持っている可能性があり他にも役立つものを紹介しました。私はexcept-keyword(私は 'そうでない場合は好きです)を除いて、すべてのものを使用するようにしました。ありがとう! – user272735

関連する問題