【问题标题】:How to run default rake tasks in Rails 5?如何在 Rails 5 中运行默认 rake 任务?
【发布时间】:2019-04-13 09:10:44
【问题描述】:

这是某人的上篮......

回到 Rails $ rake 即可运行我们的测试套件,这要归功于 Rakefile 中的默认设置:

task default: [:rubocop, :spec, :teaspoon]

但在 Rails 5 中,由于 rake 已被 rails 取代,如何运行默认 rake 任务并不那么明显。 rails 单独给出了 rails 响应但不运行规范的可能命令列表。 rails test 似乎合乎逻辑,但它试图运行我们不使用的 minitest。 rails spec 将运行 Rspec,但不会运行 teaspoonrubocop

这去哪儿了?为什么看起来如此简单的事情对我来说却很难找到自己?

【问题讨论】:

    标签: ruby-on-rails rspec rake rakefile


    【解决方案1】:

    只需创建一个新的rake 任务来运行其他任务:

    lib/tasks/my_extensions.rake
    task :my_test do
      Rake::Task[:foo].invoke
      Rake::Task[:bar].invoke
    end
    # or the short version:
    # task my_test: [:foo, :bar]
    
    task :foo do
      puts "FOO"
    end
    
    task :bar do
      puts "BAR"
    end
    

    运行rails my_test,您将在控制台中看到FOOBAR

    如果您不知道将文件放置在何处以编写上述代码,请查看您的/Rakefile

    # Add your own tasks in files placed in lib/tasks ending in .rake,
    # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
    
    require_relative 'config/application'
    
    Rails.application.load_tasks
    

    它说将它们写在lib/tasks 中并以.rake 结束,你不需要它们。在您的具体问题中,将我的代码从 :foo:bar 更改为您的具体任务 :rubocop :spec :teaspoon

    但是,您似乎正在执行一些 BDD 或 TDD 循环。查看rails Guard,它可能对您有更好的帮助。我在我的项目中使用它,并且效果很好。

    【讨论】:

      【解决方案2】:

      rails default 在 Rails 5.2.1 上为我执行这些任务,但我在任何地方都找不到它的文档。

      【讨论】:

        猜你喜欢
        • 2011-08-04
        • 2011-12-28
        • 2013-05-12
        • 1970-01-01
        • 2015-05-07
        • 2010-10-09
        • 1970-01-01
        • 2016-06-03
        • 1970-01-01
        相关资源
        最近更新 更多