我正在使用名为artii(http://rubygems.org/gems/artii)的宝石,它可以从文本中创建ascii艺术图像。
我似乎只能使用system()调用它,但是我想将结果显示为网页中的文本
我的.rb文件:
def makeText
@word = system('artii Hello World')
puts @word
@word
end
puts
:
=> _ _ _ _
=> | | | | | | |
=> | |__| | ___| | | ___
=> | __ |/ _ \ | |/ _ \
=> | | | | __/ | | (_) |
=> |_| |_|\___|_|_|\___/
然后,在我的haml文件中:
#{makeText}
=> true
有没有办法从命令行获取结果并将其转换为字符串,数组或哈希以显示在网页中?
谢谢!
答案 0 :(得分:2)
使用system
或反引号将 gem 称为外部命令似乎很荒谬。您可以将它从Ruby用作Ruby库,而无需任何系统交互。最简单的调用是:
@word = Artii::Base.asciify('Hello World')
如果您想要更复杂的调用(即不同的字体,样式等),请查看that gem's documentation。
答案 1 :(得分:0)
您想使用backticks而不是system
方法。只需将shell命令包含在反引号中,返回值将是一个字符串,其中包含输出到标准输出的任何内容。
@word = `artii Hello World`
注意:注意不要先将用户输入传递给shell而不先清理它,以防止恶意用户执行任意shell命令。只要你是用反引号提供字符串的那个,而不是用户,你就没事了。