kiyoka.2013_01_18 RSSPLAIN

Related pages: !kiyoka.blog.list !kiyoka.blog.2013_01
554455555555555555525555555555555555555555555555555555555555555355555555555555555555555555335
5

[MacRuby] コマンドラインRubyスクリプトをPasteHub.appにデプロイしてみた

5

 

4

PasteHub.netというクリップボード同期サービス用にMacRubyとXcodeを使ってMacOS X用のクライアントアプリケーションを作っている。 kiyoka/pastehub · GitHubEXT

4

PasteHub.appというMacOS Xで起動する普通のUIアプリケーションがとりえあず開発できた。しかし問題が…

5

 

5

問題点

5

 

5

PasteHubクライアントにはpastehubPostとpastehubDumpというコマンドライン起動するスクリプトがある。

5

これらのスクリプトはEmacsなどの外部アプリとの連携用だ。

5

Emacsからクライアントから新規のペーストデータをPostしたりローカルの同期済みデータベース(gdbm)を参照する時に使う。

5

 

5

問題はそれが含まれないこと。

5

※ MacRubyのバージョンは本エントリ執筆時期なので、MacRuby 0.13 の開発版での話。

5

 

5

問題1

5

 

5

gemに含まれるbinディレクトリの中身はdeployされない。(Xcodeからのgemのデプロイはmacruby_deployのオプションで制御する)

5
 参考
5
  Embedding MacRuby in your application · MacRuby/MacRuby Wiki · GitHubEXT
2
 #(img http://a248.e.akamai.net/camo.github.com/17c3b48661abd0e58f979b0237319f7a4c67982f/687474703a2f2f776174736f6e313937382e6769746875622e636f6d2f4d6163527562792d446f4a6f2f696d616765732f656e2f696e74726f2d6465706c6f796d656e742f6465706c6f796d656e745f6f7074696f6e2e706e67)
5

 

5

問題2

5

 

5

macruby本体はdeployされない。

5

macruby本体はdeployされないので、コマンドライン起動スクリプトを処理できない。

5

 

5

実験1: 手でmacruby本体とスクリプトをコピーしてみる。

5

 

5
Dropboxのtenmpフォルダ内で作業した。
5

 

5
$ cd /Users/kiyoka/Dropbox/temp/
5
$ ls -al | grep -i pastehub.app
5
drwxr-xr-x   3 kiyoka         staff          102  1 18 23:00 PasteHub.app
5

 

5
試しにmacrubyをコピー
5

 

5
$ find /Library -name macruby | grep bin
5
/Library/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby
5
$ find ./PasteHub.app -name usr
5
./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr
5
$ mkdir -p ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin
5
$ cp /Library/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin
5

 

5
$ ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby --version
5
MacRuby 0.13 (ruby 1.9.2) [universal-darwin11.2, x86_64]
5

 

5

動いた!

5

 

5
試しにpastehubDumpをコピー
5

 

5
$ cp /Users/kiyoka/work/github/pastehub/bin/pastehubDump ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin
5
$ ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby -I  ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/lib/ruby/site_ruby/1.9.2 ./PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/pastehubDump 
5
clientDump [command] [arg]
5
  1) clientDump  list
5
  2) clientDump slist
5
  3) clientDump get  key
5
  4) clientDump top
5
  5) clientDump latest
5

 

5

動いた!

5

どうやらファイルは足りているらしい。

5

 

5

 

3

実験2: PasteHub.appをアプリケーションフォルダにドラッグしてみる。

5

 

5
ここに入るようだ。
5

 

5
 /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby
5

 

5
フルパスで実行してみる。
5

 

5
$ /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby -I  /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/lib/ruby/site_ruby/1.9.2 /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/pastehubDump 
5
clientDump [command] [arg]
5
  1) clientDump  list
5
  2) clientDump slist
5
  3) clientDump get  key
5
  4) clientDump top
5
  5) clientDump latest
5

 

5
$ /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/macruby -I  /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/lib/ruby/site_ruby/1.9.2 /Applications/PasteHub.app/Contents/Frameworks/MacRuby.framework/Versions/0.13/usr/bin/pastehubDump  list
5
1358516202=2013-01-18.13:36:42=07d9393429f2447c1004e00ee528d93ad10438f0
5
1358516169=2013-01-18.13:36:09=98cd22944898489579a9aa7d537c6b82e768bd06
5
1358515920=2013-01-18.13:31:59=187d2122d1013dbd3124166289ffd92e5aa511e7
5
1358515901=2013-01-18.13:31:41=d25de6b859b209e96657f5179e4ad942c22e23fb
5
1358515899=2013-01-18.13:31:38=4219c8d13df8bc8654e6de8806e00a36260b82e2
5

 

5

動いた! gdbmで保存しているデータを開くこともできている。

5

ということは、このパスを外部アプリから調べて同じコマンドラインを実行すれば良い。

5

なんとか解決しそうだ。

5

 

3

追記: いやまてよ…  MacRubyをインストールした環境でしたうまく動かないという可能性があるな… MacRubyを消して動かしてみないと…

3

 

5

...comment disabled...