【问题标题】:How do I get a custom Rake task to run in Sinatra?如何让自定义 Rake 任务在 Sinatra 中运行?
【发布时间】:2013-12-03 14:10:39
【问题描述】:

*我想在我的 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 找不到该文件的正确目录。

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

我正在使用 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)

【问题讨论】:

    标签: ruby-on-rails ruby sinatra rake


    【解决方案1】:

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

    编辑:

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

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

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

    【讨论】:

    • 我似乎没有工作。我已经更新了原来的问题。
    • lib/tasks 不是文件夹吗?为什么需要文件夹而不是文件?
    • 我也试过 ./lib/tasks/greet.rake。我得到了同样的结果。
    • 注意,如果您也想获取任务/子目录,请使用 glob 模式lib/tasks/**/*.rake
    猜你喜欢
    • 1970-01-01
    • 2011-04-11
    • 2014-07-12
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多