我想从我的Shoes应用程序执行另一个ruby脚本。我试试
button "..." do
`ruby -rubygems /Users/kemiisto/Desktop/Ruby/gears.rb`
end
但没有任何反应。在其他命令的情况下,例如
button "..." do
`open /Applications/TextEdit.app/`
end
一切正常。有什么想法吗?
答案 0 :(得分:2)
事情正在发生,你只是没有对你的命令返回的文本做任何事情。当您通过'system'或反引号运行系统命令时,每个命令都会返回转储到STDOUT的命令。
Shoes.app do
@s = stack {}
button "go!" do
@out = `ls -al`
@s.clear { para @out }
end
end
答案 1 :(得分:1)
这可能是奇怪的方式。但我觉得有效 也许你使用Mac?(从您的路径),此代码适用于Windows 如果在Mac上,我认为你可以在执行终端后向终端发送命令 或者从ruby执行applescript。
希望以下想法可以帮助你(获胜)。
require 'win32ole'
...some code...
button "..." do
@auto = WIN32OLE.new('AutoItX3.Control')
@auto.Run('cmd.exe','',@SW_MAXIMIZE)
@auto.WinActivate("C:\WINDOWS\system32\cmd.exe")
@auto.ControlSend("[CLASS:ConsoleWindowClass]", "", "", 'ruby -rubygems /Users/kemiisto/Desktop/Ruby/gears.rb')
end
答案 2 :(得分:0)
我试着跑
Shoes.app do
@s = stack {}
button "debug" { @s.clear { para `which ruby` } }
end
所以你可以看到它正在调用哪个ruby调用,并从那里开始工作
更好的是,如果open
有效,请尝试将ruby
的调用更改为/usr/bin/env ruby
。
答案 3 :(得分:0)
简单的需要怎么样? 它肯定有效,但我无法想象追溯之后发生了什么(除了真正的,由需要返回,如果一切正常的话)......虽然在这种情况下,系统的信息量不会太多。
答案 4 :(得分:0)
load
可能比
更好require
在这里。要求只会加载一次。