bee源碼分析

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

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目錄下應該果斷通知使用者目錄錯了。

原文連結:bee源碼分析,轉載請註明來源!

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.