Выполнение Objective-C из Ruby on Rails - PullRequest
4 голосов
/ 17 ноября 2011

Я хочу выполнить следующий код Objective-C в моем приложении Rails:

CFMutableStringRef inputString = CFStringCreateMutableCopy(kCFAllocatorDefault, 32,     CFSTR("общей"));
CFLocaleRef locale = CFLocaleCreate(kCFAllocatorDefault, CFSTR("ru"));

CFStringTransform(inputString, NULL, kCFStringTransformStripDiacritics, false);
CFStringLowercase(inputString, locale);


NSLog(@"%@", (NSString *)inputString);

CFRelease(locale);
CFRelease(inputString);

Он в основном выводит строчную версию входной строки без диакритических знаков. Я работаю на сервере Snow Leopard.

Как я могу это сделать (без использования MacRuby, который кажется здесь излишним)? Я слышал о расширениях Ruby, но не могу найти никаких ресурсов в моем случае.

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Вы, вероятно, можете сделать это, используя ffi, но для этого потребуется ввести набор спецификаций функций.Крошечный тестовый пример для вызова базовой функции:

require 'ffi'

module CF
  extend FFI::Library
  ffi_lib '/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation'
  attach_function :CFAbsoluteTimeGetCurrent, [], :double
end

puts CF.CFAbsoluteTimeGetCurrent
0 голосов
/ 17 ноября 2011

Вместо того, чтобы создавать приложение, вам нужно включать и выключать его в одном экземпляре Rails, вы можете написать свое приложение, используя другие способы связи, например именованные каналы:

http://hints.macworld.com/article.php?story=20041025103920992 http://www.pauldix.net/2009/07/using-named-pipes-in-ruby-for-interprocess-communication.html

Или по расширению Ruby C:

http://ruby -doc.org / docs / ProgrammingRuby / html / ext_ruby.html http://people.apache.org/~rooneg/talks/ruby-extensions/ruby-extensions.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...