如何 运行 在 Rails 中的同一个文件中多次 rake 任务
How to run rake task multiple times in same file in Rails
我已经在一个文件中编写了多个测试用例,我想 运行 在每个测试中分别进行 rake 任务。
当我 运行 使用此命令的测试用例时:
ruby -I test test/integration/my_test_file.rb
然后只抽取任务 运行 一次。我的许多测试都失败了。
但是如果我 运行 使用此命令
单独测试所有失败
ruby -I test test/integration/my_test_file.rb -n test_name
那么所有测试都通过了。
问题是 rake 任务在第一种情况下只 运行ning 一次。
但是对于每个测试用例,每次单独测试 Rake 任务 运行s。
这是我在测试文件中设置 rake 任务的方法
require "rake"
MyAppName::Application.load_tasks
在每个测试用例中我都有这个:
Rake::Task['tasks:my_task_name'].invoke
那么我该如何解决我的问题?
好的,我得到了答案。
这里是您可以在同一范围内再次调用 Rake::Task['tasks:task_name']
的方法,无论您是想 运行 在控制器文件还是在测试文件中执行 rake 任务。
每当 Rake::Task['tasks:my_task_name'].invoke
执行时,它都会设置一个标志 @already_invoked,这意味着您不能在同一个文件中再次调用该任务。
所以你可以这样做
Rake::Task['tasks:my_task_name'].invoke
Rake::Task['tasks:send_overdue_reminders'].reenable
这里Rake::Task['tasks:send_overdue_reminders'].reenable
翻转了@already_invoked的状态,你可以在同一个文件中多次调用rake任务
我知道来晚了,但我认为你不需要 invoke
和 reenable
任务。
据我了解,您只需要 execute
他们喜欢:
Rake::Task['tasks:my_task_name'].execute
我已经在一个文件中编写了多个测试用例,我想 运行 在每个测试中分别进行 rake 任务。 当我 运行 使用此命令的测试用例时:
ruby -I test test/integration/my_test_file.rb
然后只抽取任务 运行 一次。我的许多测试都失败了。 但是如果我 运行 使用此命令
单独测试所有失败ruby -I test test/integration/my_test_file.rb -n test_name
那么所有测试都通过了。
问题是 rake 任务在第一种情况下只 运行ning 一次。 但是对于每个测试用例,每次单独测试 Rake 任务 运行s。
这是我在测试文件中设置 rake 任务的方法
require "rake"
MyAppName::Application.load_tasks
在每个测试用例中我都有这个:
Rake::Task['tasks:my_task_name'].invoke
那么我该如何解决我的问题?
好的,我得到了答案。
这里是您可以在同一范围内再次调用 Rake::Task['tasks:task_name']
的方法,无论您是想 运行 在控制器文件还是在测试文件中执行 rake 任务。
每当 Rake::Task['tasks:my_task_name'].invoke
执行时,它都会设置一个标志 @already_invoked,这意味着您不能在同一个文件中再次调用该任务。
所以你可以这样做
Rake::Task['tasks:my_task_name'].invoke
Rake::Task['tasks:send_overdue_reminders'].reenable
这里Rake::Task['tasks:send_overdue_reminders'].reenable
翻转了@already_invoked的状态,你可以在同一个文件中多次调用rake任务
我知道来晚了,但我认为你不需要 invoke
和 reenable
任务。
据我了解,您只需要 execute
他们喜欢:
Rake::Task['tasks:my_task_name'].execute