如何建立一个rake任务

时间:2011-08-20 05:33:21

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

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

  1. 将资产推送到CDN
  2. 部署到heroku
  3. 以上步骤的命令:

     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
    

    但是对于main:Object'

    ,'undefined method`hell'的错误

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

    由于

2 个答案:

答案 0 :(得分:2)

请改用system命令。有关详细信息:http://blog.jayfields.com/2006/06/ruby-kernel-system-exec-and-x.html

答案 1 :(得分:2)

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

如果你使用像Arun这样的系统,你会得到:

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