2

靴アプリから別のルビースクリプトを実行したい。やってみます

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

しかし、何も起こりません。他のコマンドの場合、例えば

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

すべて正常に動作します。何か案は?

4

5 に答える 5

2

コマンドが返すテキストに対して何もしていないだけです。「system」またはバッククォートを介してシステムコマンドを実行すると、各コマンドは、コマンドが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を使っていますか?(あなたのパスから)、このコードはウィンドウズで動作します。
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 は何かを 1 回だけロードします。

于 2009-01-30T21:43:43.337 に答える
0

私は実行してみます

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

そのため、それが呼び出しているルビーの呼び出しを確認し、そこから作業することができます

さらに良いことに、 が機能している場合openは、 の呼び出しをrubyに変更してみてください/usr/bin/env ruby

于 2009-01-14T01:37:10.857 に答える
0

簡単なrequire はどうですか?それは間違いなく機能しますが、後で実際に何が起こっているのかを追跡することは何も考えられません( trueは別として、すべてが問題ない場合にrequireによって返されます) ...このシナリオでは、システムはそれほど有益ではありませんが.

于 2009-01-26T13:17:00.357 に答える