ruby – 任务依赖是否始终以耙子的特定顺序运行?

前端之家收集整理的这篇文章主要介绍了ruby – 任务依赖是否始终以耙子的特定顺序运行?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有以下示例是基于我想要我的rakefile使用的结构:
  1. task :default do
  2. puts 'Tasks you can run: dev,stage,prod'
  3. end
  4.  
  5. task :dev => [:init,:devrun,:clean]
  6. task :devrun do
  7. puts 'Dev stuff'
  8. end
  9.  
  10. task :stage => [:init,:stagerun,:clean]
  11. task :stagerun do
  12. puts 'Staging stuff'
  13. end
  14.  
  15. task :prod => [:init,:prodrun,:clean]
  16. task :prodrun do
  17. puts 'Production stuff'
  18. end
  19.  
  20. task :init do
  21. puts 'Init...'
  22. end
  23.  
  24. task :clean do
  25. puts 'Cleanup'
  26. end

任务总是按照相同的顺序运行吗?我读到某个地方,他们不会,还有别的地方,所以我不知道.

或者,如果您可以建议一个更好的方法来做我正在尝试实现的(例如,有一个常见的初始化和清理步骤围绕依赖环境的步骤),那也是很好的.

谢谢

解决方法

从耙源码:
  1. # Invoke all the prerequisites of a task.
  2. def invoke_prerequisites(task_args,invocation_chain) # :nodoc:
  3. @prerequisites.each { |n|
  4. prereq = application[n,@scope]
  5. prereq_args = task_args.new_scope(prereq.arg_names)
  6. prereq.invoke_with_call_chain(prereq_args,invocation_chain)
  7. }
  8. end

所以看起来,代码通常只是迭代数组并顺序运行必备任务.

然而:

  1. # Declare a task that performs its prerequisites in parallel. Multitasks does
  2. # *not* guarantee that its prerequisites will execute in any given order
  3. # (which is obvIoUs when you think about it)
  4. #
  5. # Example:
  6. # multitask :deploy => [:deploy_gem,:deploy_rdoc]
  7. #
  8. def multitask(args,&block)
  9. Rake::MultiTask.define_task(args,&block)
  10. end

所以你是对的,都可以是真的,但是只有在你的任务前面加上多任务的时候,命令才能被关掉它看起来像是常规的任务按顺序运行.

猜你在找的Ruby相关文章