Guide

Changing the Global Settings

The OSA module provides some global variables that you can set to change the behavior of RubyOSA:

Name Default Description
OSA.lazy_events true Controls whether OSA proxy objects are resolved on demand, or always. By default objects are only resolved on demand, when necessary. Setting this variable to false will force every object returned by RubyOSA to be resolved. This may affect the performance of your program as one or more extra Apple events will be sent.
OSA.utf8_strings false Controls whether strings will be encoded as Unicode or ASCII. By default strings are encoded in ASCII as some applications cannot handle Unicode strings.
OSA.timeout -1 Controls the timeout duration of Apple events sent by RubyOSA. The value is expressed in ticks. By default it’s set to -1 which means about one minute. -2 means that there is no timeout.
OSA.wait_reply nil Controls whether RubyOSA should expect a result from the Apple events it will send. When set to nil, the default, it will determine this from the scriptable definition. However, it’s pretty rare but you may encounter a malformed application command. You can therefore either set this variable to true or false to force RubyOSA to send back or not a return value.

You set these settings like this:

OSA.timeout = -1
app.do_something

For your convenience, we added an API to change one or more settings only for a given scope:

OSA.set_params(:timeout => -1, :lazy_events => false) do
  app.do_something
  app.do_something_again
end
# Here the settings will get their original values