如何运行ruby脚本,我将其放入我的Rails应用程序中的/ lib / tasks /目录中一次?

时间:2012-06-02 22:29:26

标签: ruby-on-rails ruby ruby-on-rails-3

最终我想把它设置为Rake任务并做一个cron工作,但是现在......我想做的就是把我以前用作独立脚本的ruby脚本放在一起它在我的Rails应用程序中工作。

我将文件重命名为.rake而不是.rb并尝试在命令行中执行rake my_script,但这给了我此错误消息:

rake aborted!
Don't know how to build task 'my_script'

(See full trace by running task with --trace)

如何在我的Rails环境中运行此脚本?

这是我第一次做这样的事情,所以非常感谢任何帮助。

感谢。

2 个答案:

答案 0 :(得分:3)

我认为你正在寻找的是rails runner。我知道在Rails 2.3.x中你会做什么

ruby script/runner <your file>

在Rails 3中,它可能略有不同。

http://guides.rubyonrails.org/command_line.html#rails-runner

答案 1 :(得分:1)

跑步者和佣金任务之间的主要区别在于:跑步者会在rake任务没有的情况下启动rails(你可以告诉它这样做)。

由于rake可以同时执行(boot / no boot),因此rails-3中没有runner的概念。

因此,创建一个rake任务:whatever_name.rake

示例:

desc "This task does awesome stuff"
  task :do_awesome_stuff do
  awesome_method
end

def awesome_method
  #put your ruby code here
end

现在,在命令提示符下,键入rake do_awesome_stuff以执行此rake任务。

要使其启动Rails,请将任务定义更改为:

task :do_awesome_stuff => :environment do