Error creating a Ruby launchd task with RVM in OS X

1

I want to periodically run a ruby gem based command. I am using RVM and following the tutorial set out here.

My ruby task is called daily_checks.rb and is as follows:

#!/usr/bin/env ruby
puts 'in here'
Dir.chdir('/Users/Chris/Documents/Sites/mentor') do
  audit = `bundle-audit`
  system(%(osascript -e 'display notification "#{audit}" with title "bundle-audit"'))
end

I have set up an RVM alias and a bash file at /usr/local/bin/regular_checks.sh

/Users/Chris/.rvm/wrappers/regular_checks/ruby /Users/Chris/Documents/Sites/mentor/script/daily_checks.rb

When I run /usr/local/bin/regular_checks.sh then the ruby file is executed and works successfully.

I have then setup a plist at /Users/Chris/Library/LaunchAgents/local.temp.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Disabled</key>
    <false/>
    <key>EnvironmentVariables</key>
    <dict>
        <key>PATH</key>
        <string>/bin:/usr/bin:/usr/local/bin</string>
    </dict>
    <key>Label</key>
    <string>local.temp</string>
    <key>LaunchOnlyOnce</key>
    <false/>
    <key>Program</key>
    <string>/usr/local/bin/regular_checks.sh</string>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/test.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/test.stdout</string>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

When I run this job using launchControl, the job appears to fail with error number 78. The puts 'in here' in the ruby file is not executed.

The file permissions appear the same as in the tutorial i.e.

-rwxr--r--  1 Chris  staff   699 24 Nov 20:16 local.temp.plist
-rwxr-xr-x  1 Chris  admin  111 24 Nov 20:10 /usr/local/bin/regular_checks.sh
-rwxr-xr-x  1 Chris  admin   207 25 Nov 13:38 daily_checks.rb

What is error 78, and why is the file not running properly?

Obromios

Posted 2015-11-28T06:51:18.263

Reputation: 111

Answers

0

It appears that the error 78 is because the /usr/local/bin/regular_checks.sh file does not have #!/bin/bash as the first line. The full content of the file should be

#!/bin/bash
/Users/Chris/.rvm/wrappers/regular_checks/ruby /Users/Chris/Documents/Sites/mentor/script/daily_checks.rb

Obromios

Posted 2015-11-28T06:51:18.263

Reputation: 111