Using StandardAdditions.osax with appscript

M

Morton Goldberg

Can anybody tell me how to execute a command (e.g., beep) implemented
in /System/Library/ScriptingAdditions/StandardAdditions.osax from a
Ruby script using the appscript library? What I thought might work was

<code>
#! /usr/bin/env ruby -w

require "appscript"
include Appscript

std_adds =
app('/System/Library/ScriptingAdditions/StandardAdditions.osax')
std_adds.beep(3)
</code>

but it produced the following

<result>
/usr/lib/ruby/site_ruby/1.8/_aem/mactypes.rb:92: warning: method
redefined; discarding old desc
AE::MacOSError: #<AE::MacOSError -10827>

method launch_application in connect.rb at line 76
method local_app in connect.rb at line 76
method by_path in aem.rb at line 116
method send in appscript.rb at line 47
method connect in appscript.rb at line 47
method reference_by_name in appscript.rb at line 82
method method_missing in appscript.rb at line 522
at top level in untitled document at line 8

Program exited.
</result>

Regards, Morton
 
V

Vasil Vangelovski

a workaround for this:
1. Execute applescript in shell command
2. Execute shell command in ruby

Examle:

Code:
Applescript:

tell application "Finder"
delete file "Untitled.rtf"
delete file "untitled2.rtf"
end tell

Ruby:
command = "osascript -e 'tell application "Finder" to delete file
"untitled.rtf"' -e 'tell application "Finder" to delete file
"untitled2.rtf"'"
system (command)

That will execute the string in command inthe shell.
I couldn't test it but hope it works.
 
M

Morton Goldberg

a workaround for this:
1. Execute applescript in shell command
2. Execute shell command in ruby

Examle:

Code:
Applescript:

tell application "Finder"
delete file "Untitled.rtf"
delete file "untitled2.rtf"
end tell

Ruby:
command = "osascript -e 'tell application "Finder" to delete file
"untitled.rtf"' -e 'tell application "Finder" to delete file
"untitled2.rtf"'"
system (command)

That will execute the string in command inthe shell.
I couldn't test it but hope it works.

Yeah, I could do that. But it would kind of spoil the fun. As I see
it, the whole idea of the appscript library is make the sort of thing
you suggest unnecessary. The appscript library works pretty good for
replacing the AppleScript I tend to use. I much prefer writing

<code>
require "appscript"
include Appscript

finder = app('Finder')
finder.count(finder.desktop, :each => :file) # => 2
finder.disks[its.local_volume.eq(true)].get.size # => 3
</code>

to

</code>
tell app "Finder"
set onDesk to count desktop's files
set drives to (disks whose local volume is true)
set drives to drives's length
{onDesk, drives}
end tell
</code>

I just wish I knew how to access the the standard scripting additions.

Regards, Morton
 
H

has

Can anybody tell me how to execute a command (e.g., beep) implemented
in /System/Library/ScriptingAdditions/StandardAdditions.osax from a
Ruby script using the appscript library?

Use the osax module bundled with appscript, e.g.:

require 'osax'

StdAdditions = OSAX.osax

StdAdditions.beep

See the appscript documentation for more info.

HTH

has
 
M

Morton Goldberg

Use the osax module bundled with appscript, e.g.:

require 'osax'

StdAdditions = OSAX.osax

StdAdditions.beep

See the appscript documentation for more info.

HTH

It does indeed help. Exactly the info I was looking for. Thanks a lot.

Regards, Morton
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,812
Latest member
GracielaWa

Latest Threads

Top