bee(github.com/beego/bee)源码分析

             
 
 

beego编译工具bee的源码分析。这里只介绍bee run原理。

4月9号那天,出了一个线上bug,回家分析了半天,主观原因就不说了,客观原因就在于beego提供的编译打包工具bee不支持配置文件检查。。。研究了半天,关于配置文件的预编译检查,我也没啥想法,不过看了看bee的源码,还是懂了不少,记录一下。

围绕 bee run 命令说一下。

  1. 用这个命令,要进入当前包,检查目录 ./conf/app.conf 文件,得到 appname

  2. 编译。 go install controllers ,编译生成静态链接库到pkg文件夹下面。此命令还可编译出执行文件到bin文件夹下面。

  3. 生成可执行文件 go build -o Cyeam main.go ,编译出可执行文件Cyeam。可执行文件的名字就是第一步得到的appnane。

  4. 启动应用。

    appname = "./" + appname  cmd = exec.Command(appname)  cmd.Stdout = os.Stdout  cmd.Stderr = os.Stderr  cmd.Args = append([]string{appname}, conf.CmdArgs...)  cmd.Env = append(os.Environ(), conf.Envs...)   go cmd.Run()
  5. 关闭应用。启动和关闭都是用了 exec 包,创建进程和关闭进程进行操作的。

    defer func() {      if e := recover(); e != nil {          fmt.Println("Kill.recover -> ", e)      }  }()  if cmd != nil && cmd.Process != nil {      err := cmd.Process.Kill()      if err != nil {          fmt.Println("Kill -> ", err)      }  }
  6. 文件修改监控。bee命令还有个比较厉害的特性,就是每当文件发生了变化,都能自动编译。这里它使用了开源包 github.com/howeyc/fsnotify ,这是一个开源的文件通知系统。

最后补充点其他的:

  1. bee命令还可以有配置文件,名称是 bee.json 。如果你要引用你自己的包,例如 github.com/mnhkahn/maodou ,就可以在beego目录下新建bee.json文件,内容如下。此外,bee还支持很多命令,我这里只是抛砖引玉,大家可以自行研究。吐槽一下,bee命令的文档实在是少,想详细了解还是得看代码。

     {      "version": 0,      "gopm": {          "enable": false,          "install": false      },      "go_install": false,      "watch_ext": [],      "dir_structure": {          "watch_all": false,          "controllers": "",          "models": "",          "others": ["$GOPATH/src/github.com/mnhkahn/maodou"]      },      "cmd_args": [],      "envs": [],      "database": {          "driver": "mysql"      }  }
  2. 还有一个问题,bee命令老给人一个错觉。如果你把项目复制到 /tmp/ 目录下,执行bee run,项目还是可以启动的,但实际上编译的是GOPATH下面的项目。编译GOPATH下面的代码也本来也无可厚非,因为这是Golang规定的,但是能编译过并且顺利执行,这就不是很好。经常我想在/tmp目录下测试,然后测了半天发现改的东西没效果。我觉得应该检测出不再GOPATH目录下应该果断通知用户目录错了。

未经允许不得转载:zoues » bee(github.com/beego/bee)源码分析



查看原文:http://www.zoues.com/2016/10/26/beegithub-combeegobee%e6%ba%90%e7%a0%81%e5%88%86%e6%9e%90-2/
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值