我想设置一个简单的计时器,从Rails应用程序开始。该计时器应等待其持续时间,然后启动一个shell脚本,该脚本将启动./script/runner并完成初始请求。我需要脚本/跑步者,因为我需要访问ActiveRecord。unix at命令将变量传递给shell脚本?
下面是我的Rails测试线
output = `at #{(Time.now + 60).strftime("%H:%M")} < #{Rails.root}/lib/parking_timer.sh STRING_VARIABLE`
return render :text => output
然后我parking_timer.sh看起来像这样
#!/bin/sh
~/PATH_TO_APP/script/runner -e development ~/PATH_TO_APP/lib/ParkingTimer.rb $1
echo "All Done"
最后,ParkingTimer.rb读取与
ARGV.each do|a|
puts "Argument: #{a}"
end
的传递变量问题在于Unix命令“at”似乎不喜欢变量,只想处理filena MES。我要么得到取决于如何我位置的两个错误之一“S
如果我把引号的右手边,像这样
...‘〜/ PATH_TO_APP/lib中/ parking_timer.sh字符串变量’
我得到的,
-bash:〜/ PATH_TO_APP/lib中/ parking_timer.sh字符串变量:没有这样的文件或目录
II假牛逼他引用了,我得到的,
在:乱码时间
这一切发生上运行Rails的2.3 &红宝石在Mac OS 10.6盒1.8.6
我已经搞砸围绕w/BackgrounDrb,并决定其总PITA。我需要能够在任何时候取消工作。
我能够得到它至少编译和运行,而不会随身携带垃圾, 'at -t \“#{(Time.now + 60).strftime(”%m%d%H% M “)} \”< “#{Rails.root} /lib/parking_timer.sh”, “4”' 然而,它不通过可变而直接调用脚本,它的作用。 SH parking_timer.sh 4 这似乎并不重要,如果我身边有4与否或周围的脚本路径引号。 – Andrew 2010-03-31 18:42:46
我做了一些调查后做了一些重大修改。 – 2010-03-31 20:11:31
谢谢,明白了这个 输出='#{工作} Rails.root /脚本/亚军-e发展#{} Rails.root#/lib/ParkingTimer.rb {4.to_s} | at -t#{(Time.now + 60).strftime(“%m%d%H%M”)}' 它完全绕过了.sh脚本,但又如此。 输出仍然是空白,这可能会导致我在路上遇到问题,(如果需要,找不到要删除的作业)。 – Andrew 2010-03-31 20:45:30