rails rake 指南

Posted on 2012-07-15 15:47  bendanchenzhicheng  阅读(307)  评论(0编辑  收藏  举报

 

今天研究了下rake,还有rake在rails中运用,做了点总结,大家可以看看

 

rake的介绍

Rake支持任务创建,任务依赖关系追踪,以及文件编译时间识别。最后一个功能对Ruby程序员应该用不到,但如果你同时还是一个C程序员,那么你可以尝试使用Rake来替代Make。

 

rake如何工作

 

1.给个简单的例子

假设使用Rake来管理这3个任务,那么我首先需要创建一个Rakefile文件,添加以下内容

 

# -*- encoding : utf-8 -*-

task :purchaseAlcohol do

  puts "买瓶酒"

end

 

task :mixDrink do

  puts "买点下酒菜"

end

 

task :getSmashed do

  puts "喝醉了"

end

 

2.如何组织任务的依赖关系

有些任务在执行前必须先执行其它任务,就是所说的依赖关系。下面的例子就可以说明rake如何处理依赖关系

 

# -*- encoding : utf-8 -*-

desc "purchasAlcohol"

task :purchaseAlcohol do

  puts "买瓶酒"

end

 

desc "mixDrink"

task :mixDrink => :purchaseAlcohol do

  puts "买点下酒菜"

end

 

desc "getSmashed"

task :getSmashed => :mixDrink do

  puts "喝醉了"

end

 

3.rake的命名空间

用命名空间把你的任务都整合起来,进行分类,看下面的例子

 

# -*- encoding : utf-8 -*-

 

namespace :aaron do

  desc "purchasAlcohol"

  task :purchaseAlcohol do

    puts "买瓶酒"

  end

 

  desc "mixDrink"

  task :mixDrink => :purchaseAlcohol do

    puts "买点下酒菜"

  end

 

  desc "getSmashed"

  task :getSmashed => :mixDrink do

    puts "喝醉了"

  end

end

 

命名空间允许你将你的任务进行分类,你可以在一个Rakefile内创建多个命名空间,现在输入rake -T你会得到如下输出

 

rake aaron:getSmashed                  # getSmashed

rake aaron:mixDrink                    # mixDrink

rake aaron:purchaseAlcohol             # purchasAlcohol

 

4.有用的任务

以上举的例子都及其简单,通常我们建rake任务是为了完成复杂的功能

下面再给个简单的例子,但比较实用

此例子来自网上

 

desc "Create blank directories if they don't already exist"
task(:create_directories) do
  # The folders I need to create
  shared_folders = ["icons","images","groups"]
    for folder in shared_folders
    # Check to see if it exists
    if File.exists?(folder)
      puts "#{folder} exists"
    else
      puts "#{folder} doesn't exist so we're creating"
      Dir.mkdir "#{folder}"
    end
  end
end

 

5.rake在rails中使用

在lib/tasks/文件夹中添加rake文件,例如aaron.rake,在里面添加你所需要完成的任务

rake -T 可以查看你的rake任务

当然,rake任务还可以访问rails model

 

 

Copyright © 2024 bendanchenzhicheng
Powered by .NET 8.0 on Kubernetes