如何在 Rake 任务中执行命令?
我的 Rails 应用程序中有 rake 任务。我想在 rake 任务中运行命令行命令。我怎样才能做到这一点。我尝试了以下方法,但失败了
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
上面的运行命令抛出运行方法未定义&系统命令未抛出任何错误但未执行。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Rake
sh
内置任务这可能是最好的方法:
该接口类似于
Kernel.system
但是:echo b
Rake
sh
built-in taskThis is probably the best method:
The interface is similar to
Kernel.system
but:echo b
Capistrano 和其他东西使用
run
来启动命令,但 Rake 经常使用Kernel#system
来代替。您的命令可能正在运行,但不起作用。为什么不制作一个可以独立测试的包装器 shell 脚本,或者尝试使用完整路径启动:
如果您的脚本不在
scripts/
中,这似乎很奇怪system
成功时调用应返回true
。如果不是这种情况,则脚本返回错误代码,或者命令无法运行。run
is used by Capistrano and other things for launching commands, but Rake often makes use ofKernel#system
instead.Your command might be being run, but not working. Why not make a wrapper shell script you can test independently, or try and kick off using the full path:
It would seem odd to have your script not in
scripts/
The
system
call should returntrue
on success. If this is not the case, either the script returned an error code, or the command could't be run.此链接可以帮助您在 ruby 中运行命令行命令...
http://zhangxh.net/programming/ruby/6-ways-to-run-shell-commands-in-ruby/
从 Ruby 调用 shell 命令
http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html
This links may help you run command line command into ruby ...
http://zhangxh.net/programming/ruby/6-ways-to-run-shell-commands-in-ruby/
Calling shell commands from Ruby
http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html