【问题标题】:Rake tasks won't run inside of my sinatra appRake 任务不会在我的 sinatra 应用程序中运行
【发布时间】:2016-03-09 23:55:32
【问题描述】:

我有一个带有 Rakefile.rake 和 server.rb 文件的 sinatra 应用程序。在 server.rb 文件中我有

get '/' do
    rake :test
end

当我加载 localhost:4567/ 并为 sinatra 应用程序说未定义的方法“rake”时,应用程序加载但崩溃。我尝试通过使用来要求文件

require '/home/user/project/Rakefile' 

我也尝试了 Rakefile.rake,但两者都给我一个错误,上面写着“require cannot load such file”。我正在使用 Ubuntu。

我不确定为什么 sinatra 无法加载 rakefile,但是当我在终端中运行 rake test 时,它可以工作。

任何帮助都会很棒。

【问题讨论】:

    标签: ruby ubuntu sinatra rake require


    【解决方案1】:
    get '/' do
        system 'rake test'
    end
    

    【讨论】:

    • 'rake :test' 不起作用,但 'rake test' 起作用。你知道这是为什么吗?
    • @mgtemp 因为您从命令行调用 rake 时使用单词作为参数,而不是使用 Ruby 符号。
    • 如果我想在 get 之外运行 rake :test 怎么办?或者在任何得到之前? rake :test 找不到。我是否总是必须使用系统“rake test”?为什么同一个项目中的其他 .rb 文件可以使用 rake :test 但 sinatra one 不能?
    • @mgtemp rake 在您的示例中是一个方法调用。如果您的 Sinatra 应用程序没有加载该方法,那么它如何调用它?
    • @mgtemp 您提出的问题超出了原始问题的范围。如果您想require 'rake' 并在应用程序中调用 rake 方法,那么您当然可以;但虽然这是相关的,但这是一个非常不同的问题。看看这个问题是否已经在其他地方得到了回答。如果没有,请询​​问它,并使用项目中的“其他 rb 文件”来说明为什么这对您不起作用。
    猜你喜欢
    • 2011-04-11
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2015-10-30
    • 1970-01-01
    • 2017-10-01
    相关资源
    最近更新 更多