
Revel, high-productivity Go web framework modeled on Play Framework - freeman478
http://robfig.github.com/revel/
======
robfig
Revel author here.

Just wanted to alert people that this is not ready for prime time yet. I have
a sizable list of items to get through before I was planning to publicize. For
example, the packaging/deployment is not there yet (working on that
presently). Also, I have only tested it on OSX (in theory, it should be cross
platform, but I'm sure there are bugs to smoke out).

That said, please feel free to give it a try and open issues for anything you
find.

~~~
parfe
Can you add a license to the git repo? You mention MIT on the webpage, but no
LICENSE file or license headers show up inside the project itself.

~~~
robfig
Done

------
3amOpsGuy
This framework could be enough to tip me into a semi serious go powered side
project, which i really must get the finger out and do!

How should deployment work for an app created in this framework?

From the "How Revel Works" page it mentions:

    
    
        >> If the app compiled successfully, it runs the app ...<snip>...
    

Is it simply a case of lifting and dropping the binary (ensuring it's linker
dependencies are satisfied on the dest host)?

Would the final artifact be deployable to google app engine?

~~~
robfig
I'm working on adding a "rev package" command to the command-line tool. It
will create a zip file of the app and revel source directories, along with a
script to run the app.

It needs the source directories since templates and assets are kept within
them. Also, it is frequently useful to have access to the source in
production, e.g. for sending exception emails.

The goal is to make deployment to a server without a Go environment very easy.

EDIT: To answer your original question: in the current version, you must have
a working Go installation to run your Revel app. Then: "rev run
import/path/to/app prod". I am pretty sure that it will not work on GAE -- I
realize this is an important/valuable use case and will investigate it in the
future.

~~~
3amOpsGuy
Your direction sounds pretty much ideal. I'll keep checking in on this
project.

Meantime I've just installed go... Wish me luck!

------
gexla
Wow, I can't believe I didn't see this before. I have been learning Go for a
couple of weeks and had been searching for something like this the whole time.
They should add a link to the list of libraries at the Golang site.

I see this is also from one of the Go contributors. Nice!

<http://golang.org/CONTRIBUTORS>

~~~
theballwatcher
<http://go-lang.cat-v.org/pure-go-libs> has a great list of Go libs.

------
st3fan
I would strongly suggest to use a different command name than 'rev' since that
is already a standard unix command. How about just calling it 'revel' and then
people who value short names can just alias it?

~~~
robfig
Makes sense, thanks.

(I've never used the "rev" unix command before, so I didn't think much of it)

------
moystard
Being a fan of Play Framework, this could finally represent an opportunity for
me to dig into Go. I regret the absence of an ORM, but will give it a 'go'
(...) anyway.

PS: I regret that no performance analysis nor benchmarks are presented on the
project page. It could be nice to have a comparison with Play on that domain.

~~~
robfig
I did not package an "official" ORM with Revel because I did not feel like
there was a clear choice yet. (And making an ORM is too big a challenge to
bite off in addition :)

I think that GORP is the current leader
(<https://github.com/coopernurse/gorp>), and it is pretty easy to make a
plugin/interceptor that initializes it and starts/ends transactions before /
after requests.

I am planning on adding an example of this to the samples in the near future.

~~~
moystard
I will have a look at gorp. Thank you for your answer.

------
st3fan
I want to play with this, but ...

    
    
      ~/Dropbox/Documents/Go % bin/rev github.com/robfig/revel/samples/booking
      ~
      ~ revel! http://robfig.github.com/revel
      ~
      ~ unknown command "github.com/robfig/revel/samples/booking"
      Run 'rev help' for usage.
    
      ~/Dropbox/Documents/Go % rev help
      ~
      ~ revel! http://robfig.github.com/revel
      ~
      ~ usage: rev command [arguments]
      ~
      ~ The commands are:
      ~
      ~    run         run a Revel application
      ~    new         create a skeleton Revel application
      ~
      ~ Use "rev help [command]" for more information.
    

It would be nice if the 'quick start' would just work.

First impressions you know ... :-)

~~~
st3fan

      Template Compilation Error (in errors/404.html:10): function "include" not defined
    

Hey Rob, how about reposting this when things are in better shape? I've been
waiting for a good excuse to play with Go and your web framework looks like
something I could use for some real experiments, but it needs to be a little
more finished first I think.

~~~
robfig
AGREED!

Will certainly repost when it gets a little further along.

------
ramkalari
I started playing around with Go on GAE just yesterday. I will probably try
out a side project on Revel and see how it goes.

------
realrocker
I have been researching other GO web frameworks last two days and this one is
undeniably the best looking yet. But, I really wished they had integrated an
ORM from the start. Also, I wish could know "why" they chose play framework as
an architecture reference.

~~~
robfig
I am definitely looking to develop a good story for ORM. However, I don't
think it has to be in the very core of the framework -- allowing people to
plug a different one (or not use one at all) is important.

I chose Play! (1.x) because it is by far the most productive development
environment I have ever used ( _especially_ for boring business admin pages).
(Out of Django, JSP, Lift, GSE/GXP, Jetty, etc).

------
maciej
I really wish it worked on Google App Engine. It would be cool to have
abstraction layer, so there's no vendor lock-in with GAE.

~~~
EwanToo
Not trying to be awkward or anything, but why would you use GAE without using
all the technologies that lock you in to it?

If you write a "vanilla" application which can run on GAE and other platforms
without significant work, then I don't see how you'd get much benefit from GAE
itself, but I might be missing something.

------
Kilimanjaro
I like the routing syntax. Enough to make me give it a try.

