我想从我的 Shoes 应用程序中执行另一个 ruby 脚本。我试试
button "..." do
`ruby -rubygems /Users/kemiisto/Desktop/Ruby/gears.rb`
end
但什么也没发生。在其他命令的情况下,例如
button "..." do
`open /Applications/TextEdit.app/`
end
一切正常。有任何想法吗?
事情正在发生,您只是没有对命令返回的文本做任何事情。当您通过“系统”或反引号运行系统命令时,每个命令都会返回转储到 STDOUT 的任何命令。
Shoes.app do
@s = stack {}
button "go!" do
@out = `ls -al`
@s.clear { para @out }
end
end
这可能是一种奇怪的方式。但我认为有效。
也许您使用 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
load
可能比
require
在这里给你。Require 只会加载一次。
一个简单的要求怎么样?它确实有效,但我想不出什么可以追溯之后的真实情况(除了true ,如果一切正常,则由require返回)......尽管在这种情况下系统不会提供更多信息。
我会尝试跑步
Shoes.app do
@s = stack {}
button "debug" { @s.clear { para `which ruby` } }
end
所以你可以看到它调用了哪个 ruby 调用,并从那里开始工作
更好的是,如果open
有效,请尝试更改对ruby
to的调用/usr/bin/env ruby
。