如何在Sinatra中运行自定义Rake任务?

时间:2013-11-19 20:33:25

标签: ruby-on-rails ruby sinatra rake

*我想在我的Sinatra应用程序中运行自定义Rake任务,但我不断获得rake aborted! Don't know how to build task 'greet'

以下是用于测试目的的自定义Rake任务(greet.rake):

task :greet do
  puts "Hello!"
end

我已将greet.rake放入./lib/tasks(Rails)。我猜Rake无法找到该文件的正确目录。

如何在Sinatra中运行自定义Rake任务?

我正在使用Ruby 2.0.0和Sinatra 1.4.4。

更新

Rakefile现在看起来像这样:

require "./app"
require "sinatra/activerecord/rake"
require "./lib/tasks"

使用时:

rake greet

我明白了:

rake aborted!
cannot load such file -- ./lib/tasks
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-        4.0.1/lib/active_support/dependencies.rb:229:in `block in require'
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-    4.0.1/lib/active_support/dependencies.rb:214:in `load_dependency'
/Users/*/.rvm/gems/ruby-2.0.0-p247@global/gems/activesupport-4.0.1/lib/active_support/dependencies.rb:229:in `require'
/Users/*/Dropbox/Development/Sinatra/sinatra-mp-experiment/Rakefile:3:in `<top    (required)>'
(See full trace by running task with --trace)

1 个答案:

答案 0 :(得分:22)

在Sinatra应用程序的顶级目录中创建一个Rakefile,要求包含您要使用的任务的文件,您应该好好去。

编辑:

一个简单的解决方案是将您的Rakefile更改为:

require "./app"
require "sinatra/activerecord/rake"
Dir.glob('lib/tasks/*.rake').each { |r| load r}

现在将加载.rake下的任何lib/tasks文件。