RubyからCocoaを使ったり、Objective-CからRubyを使ったり

公開日: : RubyCocoa

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

RubyからCocoaのクラスを使う方法

Leopardに標準で搭載されたのでいろいろ便利になったようだ。

たとえば以下のスクリプトで辞書アプリケーションを呼び出すことができる。

ユビキタスの街角: RubyCocoa


require 'osx/cocoa'

p = OSX::NSPasteboard.generalPasteboard
p.declareTypes_owner([OSX::NSStringPboardType],self)
p.setString_forType("単語",OSX::NSStringPboardType)

OSX::NSPerformService("Look Up in Dictionary", p)

Objective-CからRubyの処理を呼び出す方法

Cocoaで何らかのBundleを書く際には、Info.plistの NSPrincipalClass にクラス名を指定しておくと、そのクラスの +load() メソッドが呼ばれてプラグインが組み込まれるようです。

no title


@implementation RCLoader

+ (void)load {
static bool installed = 0;

if (! installed) {
if (! RBBundleInit("load_ruby.rb", [self class], self)) {
installed = true;
}
}
}

そんで、RubyCocoaの初期化の中で、必要な.rbを読み込んでおく、と。

no title


def load_ruby_programs(bundle, logger)
path = bundle.resourcePath.fileSystemRepresentation
rbfiles = Dir.entries(path).select {|x| /\.rb\z/ =~ x}
rbfiles -= [ File.basename(__FILE__) ]
rbfiles.each do |path|
require( File.basename(path) )
end
end

OSX.init_for_bundle do |bundle, param, logger|
load_ruby_programs(bundle, logger)
end

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑