unix at command pass variable to shell script?

Posted by Andrew on Stack Overflow See other posts from Stack Overflow or by Andrew
Published on 2010-03-31T16:42:15Z Indexed on 2010/03/31 16:43 UTC
Read the original article Hit count: 342

Filed under:
|
|
|
|

Hi,

I'm trying to setup a simple timer that gets started from a Rails Application. This timer should wait out its duration and then start a shell script that will start up ./script/runner and complete the initial request. I need script/runner because I need access to ActiveRecord.

Here's my test lines in Rails

output = `at #{(Time.now + 60).strftime("%H:%M")} < #{Rails.root}/lib/parking_timer.sh STRING_VARIABLE`
return render :text => output

Then my parking_timer.sh looks like this

#!/bin/sh               
~/PATH_TO_APP/script/runner -e development ~/PATH_TO_APP/lib/ParkingTimer.rb $1
echo "All Done"    

Finally, ParkingTimer.rb reads the passed variable with

ARGV.each do|a|
   puts "Argument: #{a}"
end

The problem is that the Unix command "at" doesn't seem to like variables and only wants to deal with filenames. I either get one of two errors depending on how I position "s

If I put quotes around the right hand side like so

... "~/PATH_TO_APP/lib/parking_timer.sh STRING_VARIABLE"

I get,

-bash: ~/PATH_TO_APP/lib/parking_timer.sh STRING_VARIABLE: No such file or directory

I I leave the quotes out, I get,

at: garbled time

This is all happening on a Mac OS 10.6 box running Rails 2.3 & Ruby 1.8.6

I've already messed around w/ BackgrounDrb, and decided its a total PITA. I need to be able to cancel the job at any time before it is due.

© Stack Overflow or respective owner

Related posts about ruby

Related posts about rails