首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ruby脚本中运行Rake任务?

如何在Ruby脚本中运行Rake任务?
EN

Stack Overflow用户
提问于 2008-08-06 15:15:54
回答 3查看 30.1K关注 0票数 57

我有一个带有Rake任务的Rakefile,我通常会从命令行调用它:

代码语言:javascript
复制
rake blog:post Title

我想写一个Ruby脚本来多次调用Rake任务,但我看到的唯一解决方案是使用 (反号)或system

这样做的正确方法是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2008-08-06 15:24:01

来自timocracy.com

代码语言:javascript
复制
require 'rake'

def capture_stdout
  s = StringIO.new
  oldstdout = $stdout
  $stdout = s
  yield
  s.string
ensure
  $stdout = oldstdout
end

Rake.application.rake_require 'metric_fetcher', ['../../lib/tasks']
results = capture_stdout {Rake.application['metric_fetcher'].invoke}
票数 44
EN

Stack Overflow用户

发布于 2013-03-07 06:14:37

这适用于Rake版本10.0.3:

代码语言:javascript
复制
require 'rake'
app = Rake.application
app.init
# do this as many times as needed
app.add_import 'some/other/file.rake'
# this loads the Rakefile and other imports
app.load_rakefile

app['sometask'].invoke

正如克努特所说,如果你想多次调用,可以使用reenable

票数 21
EN

Stack Overflow用户

发布于 2017-01-25 06:09:16

在加载了Rails的脚本中(例如rails runner script.rb)

代码语言:javascript
复制
def rake(*tasks)
  tasks.each do |task|
    Rake.application[task].tap(&:invoke).tap(&:reenable)
  end
end

rake('db:migrate', 'cache:clear', 'cache:warmup')
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档