nar*_*ero 7 ruby rake ruby-on-rails sinatra
*我希望在我的Sinatra应用程序中运行自定义Rake任务但我会继续rake aborted!
Don't know how to build task 'greet'.
这是greet.rake用于测试目的的自定义Rake任务():
task :greet do
puts "Hello!"
end
Run Code Online (Sandbox Code Playgroud)
我已经把greet.rake在./lib/tasks(滑轨).我猜Rake无法找到该文件的正确目录.
如何在Sinatra中运行自定义Rake任务?
我正在使用Ruby 2.0.0和Sinatra 1.4.4.
Rakefile现在看起来像这样:
require "./app"
require "sinatra/activerecord/rake"
require "./lib/tasks"
Run Code Online (Sandbox Code Playgroud)
使用时:
rake greet
Run Code Online (Sandbox Code Playgroud)
我明白了:
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)
Run Code Online (Sandbox Code Playgroud)
Mau*_*res 25
Rakefile在您的Sinatra应用程序的顶级目录中创建一个,要求包含您要使用的任务的文件,您应该很高兴.
编辑:
一个简单的解决方案是将您Rakefile改为:
require "./app"
require "sinatra/activerecord/rake"
Dir.glob('lib/tasks/*.rake').each { |r| load r}
Run Code Online (Sandbox Code Playgroud)
现在任何.rake文件lib/tasks都将被加载.