前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Rake的使用

Rake的使用

作者头像
呼延十
发布2019-06-26 16:51:09
9660
发布2019-06-26 16:51:09
举报
文章被收录于专栏:呼延呼延

背景介绍

学习一下Rake的使用.

简介

Rake 即 Ruby Make,一个用ruby开发的代码构建工具.

主要是用来解决两个问题:

  1. 脚本的管理. 我们经常会为一些大型项目编写许多脚本,甚至一个功能需要多个脚本,如果每次都一个一个执行会比较麻烦.使用Rake可以将这些脚本以任务的形式定义,管理起来会更加的轻松.
  2. 脚本或者任务之间的依赖关系.假设多个脚本之间有一定的依赖关系,那么用Ruby可以管理他们之间的执行顺序.

安装

brew install rake

运行

rake 任务名即可.

rake 文件的编写

rake任务的定义是有一套自己的语法的.

编写任务

定义一个普通的任务:

代码语言:javascript
复制
desc "One line task description"
task :name_of_task do
    #your code goes here	
    sh 'echo haha'			
end

desc: 定义了任务的描述,在使用rake -T或者rake --tasks可以列出所有的任务包含其描述. task: 定义了任务的名字以及任务的具体执行逻辑,还可以选择参数.

任务之间的依赖

代码语言:javascript
复制
desc "Example of a task with prerequisites"
	task :task_two => ["task_one"] do
	#Your code goes here
end

当执行任务task_two时会检查task_one是否已经执行.

设置默认任务

默认任务及执行rake时调用的任务.

代码语言:javascript
复制
task :default => ['my_task']

命名空间

当你的任务非常多,不想他们之间互相影响的时候.可以定义命名空间

代码语言:javascript
复制
namespace 'name1' do
	# tasks...  
end

namespace 'name2' do
	# tasks...
end

只是执行的时候要使用rake name1:task1来执行.

一个Demo

假设:

我们的项目在本地开发,部署方式使用jar包部署.那么我们每次想要上线需要几步呢?

  1. 本地编译
  2. 运行测试一下
  3. 将本地jar包发送到服务器上并执行,
  4. 上线成功了.

这四个脚本,每次去手动执行一遍是在是有点麻烦.当然我们可以把他们写在一个脚本里面.但是如果我们有时候很急,不想执行测试呢?重新写一个包含1,3,4的脚本吗?

这时候可以使用rake来定义任务进行管理.定义的如下:

代码语言:javascript
复制
desc "compile"
task :compile  do
    puts "执行了编译"
end

desc "copy the jar to prod"
task :copy do
    puts "将本地jar包copy到服务器上了,并且执行了"
end

desc "run unit test"
task :test do
    puts "执行了test"
end

desc "compile and test and copy"
task :deploy => [:compile,:test,:copy] do
     puts "上线了"
end

desc "compile  and copy, without test"
task :deploy => [:compile,:copy] do
     puts "上线了,没有进行测试,注意点哦"
end

我在rakefile中定义了三个基础的任务,分别为编译,测试,copy.可以分别使用rake compile,rake test,rake copy来执行.

然后定义了两个集合起来的任务,分别为deploydeploy_without_test.可以分别使用rake deployrake deploy_without_test来执行.

这样就会非常的方便,当我们本地开发时,可以独立的调用三个任务来开发,当我们需要上线时,也可以根据不同的需求来进行执行任务.方便快捷.

执行效果如下:

2019-04-03-00-27-13
2019-04-03-00-27-13

当然,里面的打印语句需要替换为真正的执行脚本的语句,这里就不再贴出来了.

ChangeLog

2019-04-02 完成

以上皆为个人所思所得,如有错误欢迎评论区指正。

欢迎转载,烦请署名并保留原文链接。

联系邮箱:huyanshi2580@gmail.com

更多学习笔记见个人博客——>呼延十

var gitment = new Gitment({ id: 'Rake的使用', // 可选。默认为 location.href owner: 'hublanker', repo: 'blog', oauth: { client_id: '2297651c181f632a31db', client_secret: 'a62f60d8da404586acc965a2ba6a6da9f053703b', }, }) gitment.render('container')



本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 简介
  • 安装
  • 运行
  • rake 文件的编写
    • 编写任务
      • 任务之间的依赖
        • 设置默认任务
          • 命名空间
            • ChangeLog
        • 一个Demo
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档