创建ruby OS X应用程序很容易 - 创建如下结构:
xxx.app
└── Contents
├── Info.plist
├── MacOS
│ └── xxx
└── Resources
└── xxx.icns
并将代码执行到xxx中。但是启动时间很明显,所以我希望这个应用程序保持在后台并运行一些方法,当应用程序打开时:所以当我第一次运行该应用程序时,它执行代码保留在后台,当我再次运行时,应用程序是已经在后台,所以它只运行指定的方法。
最小Info.plist
:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleExecutable</key>
<string>newTabHere</string>
<key>CFBundleIconFile</key>
<string>newTabHere</string>
<key>LSUIElement</key>
<true/><!-- hides icon from Dock -->
</dict>
</plist>
答案 0 :(得分:2)
缓慢是由于ruby解释器所需的启动时间。这就是为什么它对bash脚本或objective-c来说并不慢。
与后台ruby计划沟通的步骤:
bash脚本必须:
此解决方案的优势
警告强>
这需要使用ruby解释器不断耗尽计算机的内存。因此,它不是一个用户友好的解决方案。
要在ruby中使用图形界面创建一个真正的应用程序,您必须使用macruby和rubycocoa。
或者从Appcelerator使用Titanium Desktop,你必须用javascript编写接口代码,但你可以用ruby完成剩下的工作。该方法还具有跨平台的优点。见http://developer.appcelerator.com/doc/desktop/ruby
答案 1 :(得分:0)
取决于'在后台运行'的含义。要打开它,做它的事情,然后关闭而不以任何方式接管屏幕,你可以设置属性列表以隐藏状态栏图标cite并关闭。您可以使用use automator打开,运行脚本并关闭。
答案 2 :(得分:0)
这应该像你做的那样工作。我用一个简单的脚本作为可执行文件测试了它(在你的代码中脚本代替xxx):
#!/bin/sh
a=0
echo $a >> /tmp/test.txt
我计时了:
> time /usr/bin/open test.app
real 0m0.042s
user 0m0.022s
sys 0m0.010s
因此应用程序在40毫秒内启动(如果背景应该大致同时返回)。问题可能是您打开应用程序的方式(命令行,图标,AppleScript ...)。你能告诉更多吗?
编辑:如果您使用终端打开,则可以使用'&amp;'最后签名(开始后台进程)。如果我这样做,shell将在6毫秒内返回。
BR,
的Juha