How to execute commands within Rake tasks?
我在Rails应用程序中有rake任务。我想用in rake任务运行一个命令行命令。我该怎么做呢?我尝试了以下方法,但失败了
1 2 3 4 5 | desc"Sending the newsletter to all the users" task :sending_mail do run"cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v" system"cd #{RAILS_ROOT} && ar_sendmail -o -t NewsLetters -v &" end |
以上运行命令引发未定义的运行方法&;系统命令未引发任何错误,但未执行。
雷克建筑物很可能是最好的方法:
1 2 3 4 5 | task(:sh) do sh('echo', 'a') sh('false') sh('echo', 'b') end |
接口与EDOCX1&6类似,但:
- 如果回报是真的=0,so the above never reaches EDOCX1〕〔7〕
- 在输出之前,命令自身被回收。
卡宾斯塔诺及其他东西用于发射命令,但经常使用
你的命令可能是运行,但不工作。为什么不写一个书写,你可以独立测试,或者试着用完整的路径去踢:
1 2 3 4 5 6 7 8 9 | newsletter_script = File.expand_path('ar_sendmail', RAILS_ROOT) if (File.exist?(newsletter_script)) unless (system(newsletter_script + ' -o -t NewsLetters -v &')) STDERR.puts("Script #{newsletter_script} returned error condition") end else STDERR.puts("Could not find newsletter sending script #{newsletter_script}") end |
看起来你的脚本不在
呼唤应归还
这条链接可以帮助你运行命令线路进入红宝石
http://zhangxh.net/programming/ruby/6-ways-to-run-shell-commands-in-ruby/。
呼叫红宝石壳牌
http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html
ZZU1