2011-08-20 92 views
0

我想了解如何为我的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 

但是,对于主'对象'的'未定义的方法'shell'的错误:对象'

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

谢谢

+0

http://rake.rubyforge.org/classes/Rake/Task.html#M000119 – rubish

回答

2

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

如果您使用的系统,如阿伦建议,你会得到:

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

Heroku是一款宝石,因此甚至可以通过在此任务中要求它来调用jammit:deploy。我快速浏览了该宝石,但未能找到应该调用的方法。 – suweller