4

I've built a rudimentary layout based site in golang with beego, I've split my page layout into a file called views/_layout.tpl and referenced it as below from a controller.

func (c *BuyerController) Get() {
    ...
    c.Layout = "_layout.tpl"
    c.TplName = "buyers.tpl"
}

The layout has in the middle of it the required line:

    {{.LayoutContent}}

The strange thing is that when I run the web server with IDEA/IntelliJ it renders just fine in the browser, but when I run it from the console with bee run all the html from the layout file is missing and just the contents of buyers.tpl is shown.

I've run each build of the compiled app and it the same happens, the one built by IntelliJ works, and the one built by bee run doesn't.

As far as I can see I've followed http://beego.me/docs/mvc/view/view.md#layout-design

Any ideas what I've done wrong, or any clues how to figure it out? Thanks.

Tim Abell
  • 11,186
  • 8
  • 79
  • 110

1 Answers1

1

GOPATH. Again. Typical that I post a bounty and then promptly figure it out eh?

IntelliJ keeps it's own copy of the GOPATH information in .idea/*.iml

<orderEntry type="library" name="GOPATH &lt;web&gt;" level="project" />

I'm running gvm to manage go versions, and in order to have packages installed in the right place globally my go path is as follows:

$ echo $GOPATH
/home/tim/.gvm/pkgsets/go1.4.3/global

This however means I'd have to move my src every time I switched go versions. To get round that I've used gvm linkthis to symlink my src into the gvm folder so that my source is in the GOPATH as go expects to find it. The downside of that is that I have to cd to $GOPATH/src/project/ before hitting bee run and not just run it from the real location (which is what I'd done). Without that it finds the .go files but not the layout. I'm not 100% sure why but it makes some sense.

It seems like a lot of yak shaving to make it all work so maybe I'm missing something?

Tim Abell
  • 11,186
  • 8
  • 79
  • 110
  • It seems strange that GOPATH is causing you problems. Also it is strange that you have different GOPATHs for different Go versions. I think that your setup might not comply with the expectations of the Go tool. When running your app, IntelliJ will print the GOPATH it's using as well as the GOROOT and you have control in the runner configuration over the current working directory. Might worth to check those. If you nwed any help, please ping me on Gitter. Thanks. – dlsniper May 10 '16 at 21:39
  • wow, thanks. the whole gopath and expectations about src completely threw me starting out with go. I have most of my stuff in `~/repo/proj.git/*` which also doesn't make go happy. gvm seems like a good idea, but maybe it isn't. – Tim Abell May 11 '16 at 21:32
  • the answer might be to use multiple gopaths - https://medium.com/@mnmtanish/using-multiple-gopaths-4b267dcca3f8 – Tim Abell Jun 19 '16 at 00:09