Rake的两个小应用

背景介绍

在上一篇文章中Rake的使用中,简单介绍了下Rake.经过这些天的感悟,今天添加两个小用例.

一系列git操作的合集

我的博客,还有日常写的一些小demo,工作中的所有代码,都是通过git管理的,尤其是自己的博客仓库,改动很频繁.

写完博客之后改个错别字,在线上测一些东西(反正没人看),都需要四个步骤.

1
2
3
4
1. git add .
2. git commit -m "some thing"
3. git push github仓库
4. git push 博客仓库

虽然我使用了简写的git命令,但是还是受不了啊.

因此使用Rake编写了脚本,在我查看过diff之后,一次命令,直接帮我完成这些所有步骤.

用到的知识点,Rake中定义带有参数的任务,因为我们在commit的时候需要一个message嘛.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
task :default => :push


desc "ps"
task :ps do
sh 'git ps origin master'
sh 'git ps blog_origin master'
end

desc "commit"
task :ci, :msg do |t, args|
mm = args[:msg]
sh "echo #{mm}"
end

desc "deploy"
task :deploy, :msg do |t, args|
mm = args[:msg]
sh "git add ."
sh "git ci -am #{mm}"
sh 'git ps origin master'
sh 'git ps blog_origin master'
end

deployci任务中,都是有参数传递的.

这个脚本还是有改进空间的,比如ps任务可以直接在deploy任务中调用,而不用写两遍.我这么写的原因是我解决不了怎样先执行两条语句,再调用任务.

自动上线

这个当然不是真的上线了,,,真的上线这么搞会出事情的,,所以告诫大家,在正式的线上不要这么搞.

这个脚本集成了步骤:

1
2
3
1. 将本地项目打包
2. 将jar包copy到服务器指定目录
3. 在服务器上启动项目

直接贴脚本了.

1
2
3
4
5
6
desc "deploy the jar to blog and run it"
task :deploy do
sh 'mvn clean package -Dmaven.test.skip=true'
sh 'scp target/lucene-demo-0.0.1-SNAPSHOT.jar blog:/usr/panfeng'
sh 'ssh blog " cd /usr/panfeng && nohup java -jar lucene-demo-0.0.1-SNAPSHOT.jar >> search.txt &"'
end

首先执行mvn clean package打包项目,然后执行scp source target将jar包上传到服务器,之后使用ssh 登录服务器并启动jar包.

总结

以前听过一句话,当你要将一个事情做两遍的时候,考虑为它编写一个脚本.

但是觉得有点激进了,因为当时我对脚本的理解是python,java等写的脚本,后来学习了shell,觉得还是有点麻烦,而且好多场景感觉不是很适用.

接触了Rake之后,我觉得,两次有点激进,但是我们确实应该积极的对日常的重复操作编写脚本,可以极大的提高生产力.不仅便捷,而且更加安全可靠,比我们手动执行更加可靠.





ChangeLog

2019-05-09 完成

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

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

联系邮箱:huyanshi2580@gmail.com

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