2

我想从我的 Shoes 应用程序中执行另一个 ruby​​ 脚本。我试试

button "..." do
  `ruby -rubygems /Users/kemiisto/Desktop/Ruby/gears.rb`  
end

但什么也没发生。在其他命令的情况下,例如

button "..." do
  `open /Applications/TextEdit.app/`  
end

一切正常。有任何想法吗?

4

5 回答 5

2

事情正在发生,您只是没有对命令返回的文本做任何事情。当您通过“系统”或反引号运行系统命令时,每个命令都会返回转储到 STDOUT 的任何命令。

Shoes.app do
  @s = stack {}

  button "go!" do
    @out = `ls -al`
    @s.clear { para @out }
  end
end
于 2009-01-13T15:17:03.743 回答
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
于 2009-10-25T08:39:38.403 回答
0
load

可能比

require

在这里给你。Require 只会加载一次。

于 2009-01-30T21:43:43.337 回答
0

一个简单的要求怎么样?它确实有效,但我想不出什么可以追溯之后的真实情况(除了true ,如果一切正常,则由require返回)......尽管在这种情况下系统不会提供更多信息。

于 2009-01-26T13:17:00.357 回答
0

我会尝试跑步

    Shoes.app do
        @s = stack {}
        button "debug" { @s.clear { para `which ruby` } }
    end

所以你可以看到它调用了哪个 ruby​​ 调用,并从那里开始工作

更好的是,如果open有效,请尝试更改对rubyto的调用/usr/bin/env ruby

于 2009-01-14T01:37:10.857 回答