我正在尝试找到一种方法来从另一个 RakeFile 修改/扩展 RakeFile 而无需实际更改它。
当我运行我的 rake 任务时,我从 SVN 中检索了一个包含 rakefile 的解决方案。我想要:
- 更改此 rakefile 中的变量。
- 向这个 rakefile 添加一个新任务,该任务利用现有任务。
- 执行新任务。
我想这样做最好不要实际修改磁盘上的原始 RakeFile。
这是一种在执行任务之前运行任意代码的方法。
your_task = Rake::Task['task:name']
your_task.enhance { this_runs_before_the_task_executes }
您可以类似地执行 rake 任务。
your_task.invoke
完整的文档在这里。
这是我最终解决我遇到的特定问题的代码。
Dir.chdir File.dirname(__FILE__) + '/their_app'
load 'RakeFile'
# Modify stuff from original RakeFile
COMPILE_TARGET = "release"
# Add my task
task :my_task =>[:my_pre_task, :their_task]
我不知道这是否是正确的方法,如果有人知道更好的方法,我将不胜感激评论/编辑。