Laurent Sansonetti
lsans****@apple*****
Tue Feb 27 17:43:24 JST 2007
Note that we also have $BRIDGE_SUPPORT_PATH that will be read first when looking for bridge support files (before any other possible locations). I will copy/format all of this into a text file :) Laurent On Feb 27, 2007, at 1:24 AM, Fujimoto Hisa wrote: > On 2007/02/27, at 5:40, Laurent Sansonetti wrote: > >> Hi Hisa-sensei, >> >> This looks correct to me. Thanks for the detailed work, this might >> help my company providing better documentation. > > Thanks! > I forgot description about the load path. So add the following: > > Each of four api for initialization/loader adds > `PATH_TO_RUBYCOCOA_FRAMEWORK/Resources/ruby' to the load path > ($LOAD_PATH), after initialization of RubyCocoa and before > load/evaluate a ruby program. So you should/can load RubyCocoa library > completely by: > > require "osx/cocoa" # or "osx/foundation" > > in early part of your ruby program. > > Additionally, the path to the bundle resource directory > `PATH_TO_BUNDLE/Resources' is added to the load path by the loader API > except RBRubyCocoaInit. So you can load your ruby programs. > > >> Laurent >> >> On Feb 26, 2007, at 1:56 PM, Fujimoto Hisa wrote: >> >> >>> hi guys >> >>> >> >>> I've committed implementation of the following initialize/load API >> >>> spec for the RubyCocoa 1.0. Would you satisfactorily come to this >> >>> API? >> >>> I hope it's enough for you. Could you tell us if you have >> >>> something of >> >>> comment/idea about this. Notice we should freeze the api spec soon >> >>> maybe. >> >>> >> >>> thanks >> >>> -- >> >>> hisa >> >>> >> >>> url for the original written by Japanese (my native language): >> >>> http://www.fobj.com/hisa/d/20070226.html#p01 >> >>> >> >>> Summary for Initialize/Loading API (OBjective-C side) >> >>> ----------------------------------------------------- >> >>> >> >>> * RBBundleInit -- Ruby program loader for a bundle >> >>> * RBApplicationInit -- Ruby program loader for a command/ >> >>> application >> >>> * RBRubyCocoaInit -- initialize only RubyCocoa (for >> >>> compatibility) >> >>> * RBApplicationMain -- Ruby program loader for command/application >> >>> (for compatibility) >> >>> >> >>> >> >>> Summary for Initialize/Loading API (Ruby side) >> >>> ---------------------------------------------- >> >>> >> >>> * OSX.init_for_bundle -- utility for initialize Ruby program >> >>> * OSX.require_framework -- loading framework >> >>> >> >>> >> >>> RBBundleInit -- Ruby program loader for a bundle >> >>> ------------------------------------------------ >> >>> >> >>> #import <RubyCocoa/RubyCocoa.h> >> >>> int RBBundleInit (const char* path_to_ruby_program, >> >>> Class objc_class, >> >>> id additional_param); >> >>> >> >>> Initialize Ruby and RubyCocoa, and then load Ruby program. Return >> >>> 0 if >> >>> success loading. The Ruby program is evaluated under the bundle >>> which >> >>> is related with the objc_class; the mainBundle may be seleccted when >> >>> the objc_class is nil. The additional_param is for arbitrary >> >>> usage. It's passed for a block argument of OSX.init_for_bundle >>> (later >> >>> mention). >> >>> >> >>> usage example: >> >>> >> >>> @implementation MyBundle >> >>> + (void) load() { >> >>> RBBundleInit("my_ruby_loader.rb", self, nil); >> >>> } >> >>> @end >> >>> >> >>> >> >>> RBApplicationInit -- Ruby program loader for a command/application >> >>> ------------------------------------------------------------------ >> >>> >> >>> #import <RubyCocoa/RubyCocoa.h> >> >>> int RBApplicationInit (const char* path_to_ruby_program, >> >>> int argc, >> >>> const char* argv[], >> >>> id additional_param); >> >>> >> >>> This API is almost same as RBBundleInit. The Ruby program is >> >>> evaluated >> >>> under the mainBundle. The value of the argv[0] is set in $0 (global >> >>> variable of Ruby). The array of values between argv[1] to argv >> >>> [argc-1] >> >>> is set in ARGV. >> >>> >> >>> usage example: >> >>> >> >>> int main(int argc, const char* argv[]) { >> >>> RBApplicationInit("my_ruby_loader.rb", argc, argv, nil); >> >>> return NSApplicationMain(argc, argv); >> >>> } >> >>> >> >>> >> >>> RBRubyCocoaInit (for compatibility) >> >>> ----------------------------------- >> >>> >> >>> #import <RubyCocoa/RubyCocoa.h> >> >>> void RBRubyCocoaInit(); >> >>> >> >>> Initialize RubyCocoa on assuming that initialization for ruby is >> >>> done. This API is for compatibility. Using this may be rare. >> >>> >> >>> >> >>> RBApplicationMain (for compatibility) >> >>> ------------------------------------- >> >>> >> >>> #import <RubyCocoa/RubyCocoa.h> >> >>> int >> >>> RBApplicationMain (const char* path_to_ruby_program, >> >>> int argc, >> >>> const char* argv[]); >> >>> >> >>> Initialize Ruby and RubyCocoa, and then load Ruby program. Return 0 >> >>> always. The Ruby program is evaluated under the mainBundle. argc and >> >>> argv are parsed by the parser same as the ruby command named >> >>> ruby_options. This API is for compatibility. The spec will be >>> changed >> >>> in the future. >> >>> >> >>> >> >>> OSX.init_for_bundle -- utility for initialize Ruby program >> >>> ------------------------------------------------------------ >> >>> >> >>> require 'osx/cocoa' >> >>> OSX.init_for_bundle { |bundle, additional_param, logger| ... } >> >>> >> >>> Run the ruby program in the given block. When using this method in >> >>> the >> >>> Ruby program which is passed for RBBundleInit or RBApplicationInit, >> >>> related bundle and additional_param passed as the block arguments. >> >>> the logger is the simple logger for NSLog which has two methods: >> >>> >> >>> logger.info(fmt, *args) >> >>> logger.error(err) >> >>> >> >>> usage example: >> >>> >> >>> require 'osx/cocoa' >> >>> OSX.init_for_bundle do |bundle, param, logger| >> >>> require 'MyController' >> >>> OSX::NSBundle. >> >>> objc_send :loadNibNamed, 'MyView.nib', >> >>> :owner, MyController.alloc.init >> >>> logger.info("done.") >> >>> end >> >>> >> >>> >> >>> OSX.require_framework -- loading framework >> >>> ------------------------------------------ >> >>> >> >>> require 'osx/cocoa' >> >>> OSX.require_framework FRAMEWORK >> >>> >> >>> _______________________________________________ >> >>> Rubycocoa-devel mailing list >> >>> Rubyc****@lists***** >> >>> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel >> >> _______________________________________________ >> Rubycocoa-devel mailing list >> Rubyc****@lists***** >> http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel > > _______________________________________________ > Rubycocoa-devel mailing list > Rubyc****@lists***** > http://lists.sourceforge.jp/mailman/listinfo/rubycocoa-devel