【问题标题】:how to build a rake task如何构建一个 rake 任务
【发布时间】:2011-08-20 05:33:20
【问题描述】:

我想学习如何为我的 rails 3 应用程序构建一个 rake 任务,它可以做两件事。

  1. 将资产推送到 CDN
  2. 部署到 heroku

上述步骤的命令:

 rake cache:s3
 heroku jammit:deploy --app #{app}

这是我拥有的 /lib/tasks/deployer.rake

task :deployit do
  puts '=== Storing assets on s3 ==='
  run "rake cache:s3"
  puts '=== Deploying to Heroku ==='
  run "heroku jammit:deploy --app #{app}"
end

def run(cmd)
  shell cmd
  if $?.exitstatus == 0
    display "[OK]"
  else
    display "[FAIL]"
  end
end

但是'undefined method `shell' for main:Object'的错误

关于如何使这项工作的建议?这应该是一项任务还是其他什么?

谢谢

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 rake


【解决方案1】:

第一个任务是另一个 rake 任务,如果它是 :deployit 任务的依赖项,它将运行。您当前的代码将加载 rake 两次。

如果你使用像 Arun 建议的系统,你会得到:

task :deployit => 'cache:s3' do
  puts '=== Deploying to Heroku ==='
  system "heroku jammit:deploy --app #{app}"
end

【讨论】:

  • Heroku 是一个 gem,因此甚至可以通过在此任务中要求它来调用 jammit:deploy。我快速浏览了 gem,但没有找到应该调用哪些方法。
【解决方案2】:

改用系统命令。欲了解更多信息:http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html

【讨论】:

  • 介意用新代码更新吗?还有 def 运行...这在任务中有效吗?
猜你喜欢
  • 1970-01-01
  • 2018-07-13
  • 1970-01-01
  • 2012-06-25
  • 2011-07-17
  • 2015-01-08
  • 1970-01-01
  • 2012-07-20
  • 1970-01-01
相关资源
最近更新 更多