设为首页 收藏本站
查看: 885|回复: 0

[经验分享] 一个python程序员的ruby三日游(三)——构建工具

[复制链接]

尚未签到

发表于 2017-5-7 14:32:03 | 显示全部楼层 |阅读模式



rakefilemakefilesconsrubyrake
目录(?)[+]


在构建上,Ruby比Python会强大些。  Ruby用的是Rake,Python兴许是scons,如果是用于python的话可以用shovel,这个Python就没有和一个好的标准,Rakefile算是Ruby的一个标准。
  

Rake简介
Make 是一个 UNIX® 的本机实用程序,是为管理软件编译过程而设计的。它十分通用,足以用于许多其他环境中,即使它已用于将文档编译成书,维护 Web 站点以及裁减发行版。但是,make 也有自身的约束。它具有自己的语法,这取决于制表符的(tabbed)和非制表符的(nontabbed)空白空间。许多其他工具已经进行了扩展,可以弥 补 make 的一些不足,如 Aegis 和 Ant,但这两者也都具有自己的问题。
Make 以及类似的工具都有改进的余地,但是它们都不可能让 Ruby 黑客十分开心。您从这里要去哪里?幸好,可以使用一些 Ruby 选项。Rant 是一个由 Stefan Lang 编写的工具(请参阅 参考资料)。Rant 仍处于开发周期的初级阶段,因此它可能还没有成熟到足以适用于每个人。Jim Weirich 编写的 Rake 是一个在 Ruby 社区中广泛使用的成熟系统。(转载保留Phodal'sBlogPhodal'szenthink)
Rake 是用 Ruby 编写的,并使用 Ruby 作为它的语法,因此学习曲线很短。Rake 使用 Ruby 的元编程功能来扩展语言,使之更利落地适应自动化任务。Rake 附带的 rdoc 中列出了一些优点(请注意,前两个是诸如 make 的其他任务自动化工具所共有的):


  • 用户可以用先决条件指定任务。
  • Rake 支持规则模式来合并隐式任务。
  • Rake 是轻量级的。它可以用其他项目发布为单个文件。依靠 Rake 的项目不需要在目标系统上安装 Rake。
Rakefile初步
安装Rake
[plain] view plaincopyprint?


  • geminstallrake

不过通常这个是已经有了,在那之前建议用RVM进行Ruby的版本管理。
RVM简介
Ruby Version Manager,Ruby版本管理器,包括Ruby的版本管理和Gem库管理(gemset)。目前支持Ruby的大多数版本,有 1.8.7,1.9.1,1.9.2和RubyEnterpriseEditon,通过RVM可以很方便的在多个Ruby版本中快速切换。RVM同时也支持JRuby。
RVM安装

[html] view plaincopyprint?


  • curl-Lhttps://get.rvm.io|bash-sstable

剩下部分可以参考网上写的指南大抵就是:
[html] view plaincopyprint?


  • #列出已知的ruby版本
  • rvmlistknown
  • #安装一个ruby版本
  • rvminstall1.9.3
  • #这里安装了最新的1.9.3,rvmlistknown列表里面的都可以拿来安装。
  • #使用一个ruby版本
  • rvmuse1.9.3
  • #如果想设置为默认版本,可以这样
  • rvmuse1.9.3--default


简单的Rakefile
[html] view plaincopyprint?


  • task:defaultdo
  • puts"SimpleRakefileExample"
  • end


  运行结果
  

[ruby] view plaincopyprint?


  • SimpleRakefileExample
  • [Finishedin0.2s]


Shovel
  官方是这么介绍的
  Shovel is like Rake for python. Turn python functions into tasks simply, and access and invoke them from the command line. 'Nuff said.NewShovelalso now has support for invoking the same tasks in the browser you'd normally run from the command line, without any modification to your shovel scripts.

  那么就
  
[python] view plaincopyprint?


  • gitclonehttps://github.com/seomoz/shovel.git
  • cdshovel
  • pythonsetup.pyinstall


与用官方的示例  有一个foo.py
  
[html] view plaincopyprint?


  • fromshovelimporttask

  • @task
  • defhowdy(times=1):
  • '''Justprints"Howdy"asmanytimesasrequests.

  • Examples:
  • shovelfoo.howdy10
  • http://localhost:3000/foo.howdy?15'''
  • print('\n'.join(['Howdy']*int(times)))

shovel一下  
[python] view plaincopyprint?


  • shovelfoo.howdy10


构建C语言的Hello,World
Makefile
  C代码
  
[cpp] view plaincopyprint?


  • #include<stdio.h>

  • intmain(){
  • printf("Hello,world\n");
  • return0;
  • }

一个简单的makefile示例  
[cpp] view plaincopyprint?


  • hello:c
  • gcchello.c-ohello
  • clean:
  • rmhello

执行:
[cpp] view plaincopyprint?


  • make

  就会生成hello的可执行文件,再执行

  
[cpp] view plaincopyprint?


  • makeclean

清理。Rakefile
  
[ruby] view plaincopyprint?


  • task:default=>:make

  • file'hello.o'=>'hello.c'do
  • `gcc-chello.c`
  • end

  • task:make=>'hello.o'do
  • `gcchello.o-ohello`
  • end

  • task:cleando
  • `rm-f*.ohello`
  • end


再Rake一下,似乎Ruby中的 Rake用来作构建工具很强大,当然还有其他语言的也可以,旨在可以替代MakefileScons
  新建一个SConstruct
  Program('hello.c')
[javascript] view plaincopyprint?


  • Program('hello.c')

scons,过程如下  

  
[python] view plaincopyprint?


  • phodal@linux-dlkp:~/helloworld>scons
  • scons:ReadingSConscriptfiles...
  • scons:donereadingSConscriptfiles.
  • scons:Buildingtargets...
  • gcc-ohello.o-chello.c
  • gcc-ohellohello.o
  • scons:donebuildingtargets.

总结
Rakefile

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-374294-1-1.html 上篇帖子: [Python]网络爬虫(二):利用urllib2通过指定的URL抓取网页内容 下篇帖子: Python基础教程之第2章 列表和元组
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表