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

Rake的两个小应用

作者头像
呼延十
发布2019-06-26 17:20:53
4350
发布2019-06-26 17:20:53
举报
文章被收录于专栏:呼延呼延

背景介绍

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

一系列git操作的合集

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

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

代码语言:javascript
复制
1. git add .
2. git commit -m "some thing"
3. git push github仓库
4. git push 博客仓库

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

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

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

代码语言:javascript
复制
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任务中调用,而不用写两遍.我这么写的原因是我解决不了怎样先执行两条语句,再调用任务.

自动上线

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

这个脚本集成了步骤:

代码语言:javascript
复制
1. 将本地项目打包
2. 将jar包copy到服务器指定目录
3. 在服务器上启动项目

直接贴脚本了.

代码语言:javascript
复制
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

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

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 条评论
热度
最新
推荐阅读
目录
  • 背景介绍
  • 一系列git操作的合集
  • 自动上线
  • 总结
    • ChangeLog
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档