2011-12-11 12 views
1

私はartii(http://rubygems.org/gems/artii)という名前の宝石を使って、テキストからASCIIアート画像を作成しています。外部シェルコマンドからのRuby変数

私はしかし、私は、Webページにテキストとして結果を表示したいのですが、システムを()を使用して、それを呼び出すように見えることができます

マイ.rbのファイル:

def makeText 
    @word = system('artii Hello World') 
    puts @word 
    @word 
end 

putsの結果:

=> _ _  _ _  
=> | | | | | | |  
=> | |__| | ___| | | ___ 
=> | __ |/ _ \ | |/ _ \ 
=> | | | | __/ | | (_) | 
=> |_| |_|\___|_|_|\___/ 

その後、私のHAMLファイル内:

#{makeText} 
=> true 

コマンドラインから結果を取り出し、それを文字列、配列、またはハッシュに変換してWebページに表示する方法はありますか?

ありがとうございます!

答えて

0

systemではなく、backticksを使用します。シェルコマンドをバッククォートで囲むだけで、戻り値は標準出力に出力されたものを含む文字列になります。

@word = `artii Hello World` 

注:任意のシェルコマンドを実行してから、悪意のあるユーザーを防ぐために、最初にそれを消毒せずにシェルにユーザー入力を渡すことがないように注意してください。限り、あなたはバックティックではなく、ユーザーが文字列を供給している限り、あなたは大丈夫です。

+0

よろしくお願い致します。今私は文字列を持っていますが、行の戻り値は取り除かれました。 'String.split(" n ")'と '\ r \ n 'を使って試しました。 これ以上の助けに感謝します。 –

+0

行の配列が必要ですか?そして、あなたが探しているコマンドは '@ word.split(" \ n ")'です。 '' \ n "'は改行文字です。ほとんどの場合、デフォルトの文字列区切り文字です。 – daxelrod

+0

最終的には、htmlに改行を挿入するには 'word.split(" \\ n ")'と 'gsub(/ \ n /、 '
')'を使用しなければなりませんでした。 'input.gsub ""、 ' ') '空白を世話する もう一度ありがとう! –

2

gemsystemまたはbackticksのどちらかを使用して外部コマンドと呼ぶのはうんざりです。あなたはRubyのライブラリとして、システムとのやりとりなしで使うことができます。最も簡単な呼び出しは次のようになります。

@word = Artii::Base.asciify('Hello World') 

あなたは、より複雑な呼び出し(すなわち異なるフォント、スタイルなど)をしたい場合は、that gem's documentationをチェックしてください。

関連する問題