外部スクリプトをリンクする必要があるプログラムを作成しています。
現時点では、指定されたディレクトリに外部スクリプトが存在するかどうかを確認するバリデータ メソッドを作成しようとしています。そうでない場合、エンドユーザーは、スクリプトを含むディレクトリへの完全パスまたは相対パスを入力するよう求められます。
ただし、ディレクトリに入らずに終了するオプションをユーザーに提供したいと思います。
これが私が現在使用している方法です。コメント化された部分のコメントを外すと、inp.downcase == "quit" の場合でも引数エラーが発生します...
def signalp_validator(signalp_dir)
if File.exist? "#{signalp_dir}/signalp"
signalp_directory = signalp_dir
else
puts # a blank line
puts "Error: The Signal P directory cannot be found in the following location: \"#{signalp_dir}/signalp\"."
begin
puts # a blank line
puts "Please enter the full path or a relative path to the Signal P directory."
print "> "
inp = $stdin.gets.chomp
raise ArgumentError, "Error: The Signal P directory cannot be found in the following location: \"#{inp}/signalp\"." unless File.exist? "#{inp}/signalp" # || inp.downcase == "quit"
rescue Exception => e
puts # a blank line
puts e.message
retry
else
# if inp.downcase == "quit"
# abort "\nError: A output directory is required - please create one and then try again.\n\n"
# else
signalp_directory = inp
end
end
end
return signalp_directory
end
ここから RaiseArgument 行を変更すると (上記のスクリプトのように)
raise ArgumentError, "Error: The Signal P directory cannot be found in the following location: \"#{inp}/signalp\"." unless File.exist? "#{inp}/signalp" || inp.downcase == "quit"
これに、
raise ArgumentError, "Error: The Signal P directory cannot be found in the following location: \"#{inp}/signalp\"." unless inp.downcase == "quit" || File.exist? "#{inp}/signalp"
次のエラーが表示されます
project/np_search/lib/np_search/library.rb:17: syntax error, unexpected tSTRING_BEG, expecting keyword_end (SyntaxError)
...case == "quit" || File.exist? "#{inp}/signalp"
... ^
私が間違っていることと、それを修正する方法を知っている人はいますか?
どんな助けでも大歓迎です。