A high productivity, full-stack web framework for the Go language.

Overview

Revel Framework

Build Status License Go Report Card

A high productivity, full-stack web framework for the Go language.

Current Version: 1.0.0 (2020-07-11)

Supports go.mod package management

Quick Start

Install Revel:

go get -u github.com/revel/cmd/revel

Create & Run your app:

revel new -a my-app -r

Open http://localhost:9000 in your browser and you should see "It works!"

Community

Learn More

Contributing

Contributors

Comments
  • CSRF Support

    CSRF Support

    This is a first attempt at adding CSRF support. I've modeled the implementation closely after the Express.js CSRF middleware and Django's CSRF middleware.

    I preferred some of the subtleties found in Express' version, namely that tokens weren't stored "as-is" in the session cookie, but rather a secret that was used to generate them lazily. Django had some additional strictness with the HTTP referer which I thought was important as well.

    Usage is pretty simple. Add csrf.CsrfFilter to the app's filters (it must come after the revel.SessionFilter), and you're good to go. To add CSRF fields to a form, use the template tag {{ csrftoken . }}. The filter adds a function closure to the RenderArgs that can pull out the secret and make the token as-needed, caching the value in the request. Ajax support provided through the X-CSRFToken header.

    The csrf.RefreshSecret should be called after a user logs in.

    Like I said, first stab at things. Happy to make/discuss improvements.

    topic-modules 
    opened by iamjem 42
  • Relocating Revel's repo to a GH organization

    Relocating Revel's repo to a GH organization

    @robfig @landr0id @verdverm

    I've discussed this briefly in the past with Rob. I'd like to move Revel to github.com/gorevel so that we can manage the team better when Rob is MIA. It would also allow us to consider adding additional repos (e.g. skeleton templates, the new mailer and other Revel modules).

    Rob also has github.com/revelframework IIRC.

    looking into GH's process for moving repos, it seems GH will forward all traffic on github.com/robfig/revel to the new URL we choose, so it shouldn't affect anything too dramatically. Not sure about the GH pages site though. I'd love to setup a dedicated domain for Revel anyway, so maybe now's a good time to introduce that.

    My last concern is Rob's other Go packages (e.g. config and pathtree). I am fine with leaving them with Rob since they are essentially free standing. Also, moving them may affect other projects who import them.

    Thoughts?

    type-support 
    opened by brendensoares 34
  • RevelFramework.com  domain

    RevelFramework.com domain

    I want to bring this up now..

    But what we ideally want is the "domain" for revel moving forwards..

    I got my little subdomain at http://revel-docs.daffodil.uk.com/ doing things..

    But Ideally what we want is some applications that make revel work,,

    Compile things, even test things..

    So I kinda want to create the.. revel-samples.daffodil.uk.com site

    Which will compile the samples and run as an application... So that its interactive and live online...and reflext real app

    Of course, this will be a revel application.. Get the idea ;-)))

    in long term, we need a domain, but can be party to this with dedicates and jenkins and job.. hell revel should be able to run itself.. is the idea..

    We cant get that outta github.. with the docs tied to their sandbox, cannot run code etc.. We need to seperate ourselves from the "markdown" and move more stuff into go code.. as lines of text..

    Feedback appreciated on dog food..

    Maybe the revel-devel.daffodil.uk.com is the first one and this check status of all git modules and latest patches et all..

    status-planning effort-hours priority-should 
    opened by pedromorgan 29
  • Plugin/module relationship and i18n support

    Plugin/module relationship and i18n support

    A couple of questions/issues I have come across:

    1. What is the intended relationship between a plugin and a module?

    2. When I want to create a plugin to add functionality (for instance using OnAppStart()), there doesn't seem to be a way for it to register itself.

      Even when embedding it in a module, I couldn't really find a way to let it hook into Revel in order for it to register itself apart from adding a dummy Controller. Am I missing something or is it just not possible at the moment?

    opened by tmbrggmn 29
  • Fully qualified controller naming

    Fully qualified controller naming

    suppose i have two controllers both named UserController under controllers/api/v1/ and controllers/api/v2. since controllers is currently only indexed by their names, please add support for fully qualified package name in the routes file.

    status-planning topic-controller topic-routing 
    opened by plestoon 27
  • Basic user authentication module

    Basic user authentication module

    For #281. I tried to get this as simple and as decoupled as I could to allow for customization on the app side.

    This is aimed at apps with stored user information that either use auth.User or embeds it in another struct.

    Usage

    package app
    
    import (
        "github.com/robfig/revel"
        "github.com/slogsdon/acvte/app/controllers"
        "github.com/slogsdon/acvte/modules/db"
        "github.com/robfig/revel/modules/auth"
    )
    
    func init() {
        // Filters is the default set of global filters.
        revel.Filters = []revel.Filter{
            revel.PanicFilter,
            revel.RouterFilter,
            revel.FilterConfiguringFilter,
            revel.ParamsFilter,
            revel.SessionFilter,
            revel.FlashFilter,
            revel.ValidationFilter,
            revel.I18nFilter,
            revel.InterceptorFilter,
            revel.ActionInvoker,
        }
        // tell auth module how to grab our user
        auth.GetHash = func(username string) *auth.User {
            user := new(auth.User)
            db.Db.WhereEqual("username", username).Limit(1).Find(user)
            return user
        }
        // the Admin controller requires authentication
        revel.InterceptFunc(auth.CheckSession, revel.BEFORE, &controllers.Admin{})
    }
    
    opened by slogsdon 26
  • Hot compile is very slow

    Hot compile is very slow

    I've been working on a new revel app and have been switching back and forth between 2 computers. On one computer the app builds in about 1 second, on the other it takes more than 30 seconds. By "the app builds" I mean after typing revel run /path/to/my/app and then refreshing the browser and waiting for the page to load.

    They are both running ubuntu 13.04, are both new computers with decent processors, both have go 1.1.1 installed. I can get more info later (one of them is at work), but just wanted to see if anyone else has had problems with a slow build. It makes development a challenge.

    type-support topic-runtime 
    opened by cswank 26
  • Second struct in type revel fails to find the controller

    Second struct in type revel fails to find the controller

    Given that the following controller exists in its own file everything works fine type ( FooController struct {*revel.Controller} )

    But if I add a second structure inside the type this controller is not found type ( FooController struct {*revel.Controller} Bar struct {a string} )

    If I break them out it works type FooController struct {*revel.Controller} type Bar struct {a string}

    opened by NitroKKX 24
  • panic: reflect: call of reflect.Value.Type on zero Value

    panic: reflect: call of reflect.Value.Type on zero Value

    After upgrading to 0.9.0 I get

    INFO  2014/02/26 15:53:03 revel.go:320: Loaded module static
    INFO  2014/02/26 15:53:03 revel.go:320: Loaded module testrunner
    INFO  2014/02/26 15:53:03 revel.go:320: Loaded module jobs
    INFO  2014/02/26 15:53:03 main.go:33: Running revel server
    panic: reflect: call of reflect.Value.Type on zero Value
    
    goroutine 1 [running]:
    runtime.panic(0x4558160, 0xc2100489c0)
        /Users/len/Projects/go/src/pkg/runtime/panic.c:266 +0xb6
    reflect.Value.Type(0x0, 0x0, 0x0, 0x0, 0x0)
        /Users/len/Projects/go/src/pkg/reflect/value.go:1698 +0x79
    github.com/revel/revel.findControllers(0x5727ea8, 0x461e2c0, 0xc210048980, 0x1, 0x1)
        /Users/len/Projects/gw/src/github.com/revel/revel/controller.go:294 +0x25a
    github.com/revel/revel.RegisterController(0x4618b80, 0x0, 0xc210099480, 0x5, 0x5)
        /Users/len/Projects/gw/src/github.com/revel/revel/controller.go:373 +0x1f3
    main.main()
        /Users/len/Projects/gw/src/github.com/CloudAfrica/cog/app/tmp/main.go:81 +0x822
    
    goroutine 3 [syscall]:
    runtime.goexit()
        /Users/len/Projects/go/src/pkg/runtime/proc.c:1394
    
    type-support 
    opened by lenw 24
  • Character missing under windows  when compiling Booking (Backslash plague ?)

    Character missing under windows when compiling Booking (Backslash plague ?)

    It seems that when making main.go it has some missing character under windows exemple :: It may be some kind of backslash plague ?

    here \ontrollers instead of \controllers

        C:\Documents and Settings\jmartinbertdel-tp\Mes documents\Mercurial\Gopa
        th\src\github.com\robfig\revel\samples\booking\app\ontrollers (from $GOPATH)
    

    the output of my compilation https://github.com/bussiere/booking/blob/master/Error_Compiling_windows.txt

    type-bug 
    opened by bussiere 24
  • mail support

    mail support

    This is the draft version of mail support with minimum implementation. The parsing from view template is not implemented yet.

    SendMail and SendFromTemplate are two helper methods for most use cases. SendMails sends the emails in a single connection.

    It support both plain text and html or both.

    Thinking about the queue, but before that, please help to review the design and suggest what I need to adjust.

    opened by fzxu 23
  • fix(sec): upgrade gopkg.in/yaml.v3 to 3.0.0

    fix(sec): upgrade gopkg.in/yaml.v3 to 3.0.0

    What happened?

    There are 1 security vulnerabilities found in gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c

    What did I do?

    Upgrade gopkg.in/yaml.v3 from v3.0.0-20200313102051-9f266ea9e77c to 3.0.0 for vulnerability fix

    What did you expect to happen?

    Ideally, no insecure libs should be used.

    The specification of the pull request

    PR Specification from OSCS

    opened by chncaption 0
  • Escaping filename in Content-Disposition

    Escaping filename in Content-Disposition

    The filename returned by RenderFileName does not escape the " character. This PR suppresses incorrect behavior when downloading files with special file names.

    Details were sent to @brendensoares, @notzippy on gitter.

    opened by motoyasu-saburi 0
  • Can't get jobs module to work

    Can't get jobs module to work

    Hi! I can't seem to get the jobs module to work anymore. Not when running built app or using revel run, in either dev or prod mode.

    I updated my revel project to use Go 1.17, revel/revel v1.1.0, revel/modules v1.1.0 and installed revel/cmd/revel v1.1.2. Inidirect dependenccies (from go.mod): github.com/revel/config v1.1.0 // indirect github.com/revel/cron v1.1.0 // indirect github.com/revel/log15 v2.11.20+incompatible // indirect github.com/revel/pathtree v0.0.0-20140121041023-41257a1839e9 // indirect

    Running on Ubuntu 20.04.4 LTS.

    In my browser running locally I get: (port used 9020) localhost:9020/@jobs -> Not Found No matching route found: /@jobs

    and also the jobs are not run at the time indicated.

    Jobs worked when I was using Go 1.16 and revel 1.0.0.

    I've followed the manual and my app.conf has module.jobs = github.com/revel/modules/jobs and the conf/routes file module:jobs

    Module testrunner works but jobs not...

    Any help would be much appreciated!

    opened by terhitormanen 0
  • Added verification of X-HTTP-Method-Override before use

    Added verification of X-HTTP-Method-Override before use

    Verify that the method in X-HTTP-Method-Override is a valid method before use using it. Validation is performed using the same logic as net/http dose. This prevents a routing confusion vulnerability that allowed an attacker to control the entire internal revel routing path (used to find a controller) via the override header. This issue can be problematic in instances where authentication is based on the path for example in a revel.Filter or if the revel app is behind a reverse proxy.

    opened by KilledKenny 4
  • panic in

    panic in "concurrent map read and map write"

    when I was running an server, error occured:

    fatal error: concurrent map read and map write
    
    goroutine 164 [running]:
    runtime.throw(0x8e60fd, 0x21)
            /home/jim/golang/go/src/runtime/panic.go:1117 +0x54 fp=0x4000b2ad40 sp=0x4000b2ad10 pc=0x49434
    runtime.mapaccess2_faststr(0x80c720, 0x4000358b40, 0x79e468, 0x7, 0x9dda38, 0x4000456050)
            /home/jim/golang/go/src/runtime/map_faststr.go:116 +0x630 fp=0x4000b2ade0 sp=0x4000b2ad40 pc=0x26010
    github.com/revel/revel.(*Controller).SetTypeAction(0x40004612b0, 0x4000ad6000, 0xb, 0x400016cc88, 0x8, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/controller.go:414 +0x480 fp=0x4000b2b000 sp=0x4000b2ade0 pc=0x4c4390
    github.com/revel/revel.(*Controller).SetAction(0x40004612b0, 0x4000ad6000, 0xb, 0x400016cc88, 0x8, 0x0, 0x0)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/controller.go:385 +0x50 fp=0x4000b2b060 sp=0x4000b2b000 pc=0x4c3ee0
    github.com/leanote/leanote/app/lea/route.RouterFilter(0x40004612b0, 0x40003cdf38, 0x9, 0x9)
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:76 +0x388 fp=0x4000b2b240 sp=0x4000b2b060 pc=0x706178
    github.com/revel/revel.PanicFilter(0x40004612b0, 0x40003cdf30, 0xa, 0xa)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4 fp=0x4000b2b2e0 sp=0x4000b2b240 pc=0x4d5d34
    github.com/revel/revel.glob..func33(0x40004612b0, 0x40003cdf28, 0xb, 0xb)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c fp=0x4000b2b350 sp=0x4000b2b2e0 pc=0x507b5c
    github.com/revel/revel.handleInternal(0x9d2878, 0x400035d878)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8 fp=0x4000b2b590 sp=0x4000b2b350 pc=0x4eac18
    github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x40006a2d20, 0x40006ae600)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474 fp=0x4000b2b6c0 sp=0x4000b2b590 pc=0x4edda4
    github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x40006a2d20, 0x40006ae600)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8 fp=0x4000b2b710 sp=0x4000b2b6c0 pc=0x4ed1c8
    github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x40006a2d20, 0x40006ae600)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44 fp=0x4000b2b750 sp=0x4000b2b710 pc=0x50b6a4
    net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x40006a2d20, 0x40006ae600)
            /home/jim/golang/go/src/net/http/server.go:2049 +0x40 fp=0x4000b2b780 sp=0x4000b2b750 pc=0x371600
    net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x40006a2d20, 0x40006ae600)
            /home/jim/golang/go/src/net/http/server.go:2867 +0x244 fp=0x4000b2b7d0 sp=0x4000b2b780 pc=0x3752a4
    net/http.(*conn).serve(0x40001d6140, 0x9d87a8, 0x4000814000)
            /home/jim/golang/go/src/net/http/server.go:1932 +0x1670 fp=0x4000b2bfc0 sp=0x4000b2b7d0 pc=0x3707f0
    runtime.goexit()
            /home/jim/golang/go/src/runtime/asm_arm64.s:1130 +0x4 fp=0x4000b2bfc0 sp=0x4000b2bfc0 pc=0x7eeb4
    created by net/http.(*Server).Serve
            /home/jim/golang/go/src/net/http/server.go:2993 +0x78c
    
    goroutine 1 [IO wait]:
    internal/poll.runtime_pollWait(0x7f087c25d0, 0x72, 0x0)
            /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
    internal/poll.(*pollDesc).wait(0x4000438018, 0x72, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
    internal/poll.(*pollDesc).waitRead(0x4000438018, 0xffffffffffffff00, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
    internal/poll.(*FD).Accept(0x4000438000, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_unix.go:401 +0x340
    net.(*netFD).accept(0x4000438000, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/fd_unix.go:172 +0x4c
    net.(*TCPListener).accept(0x40005b4198, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/tcpsock_posix.go:139 +0x44
    net.(*TCPListener).Accept(0x40005b4198, 0x0, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/tcpsock.go:261 +0x58
    net/http.(*Server).Serve(0x400006a000, 0x9d7220, 0x40005b4198, 0x0, 0x0)
            /home/jim/golang/go/src/net/http/server.go:2961 +0x374
    github.com/revel/revel.(*GoHttpServer).Start(0x40005b3360)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:94 +0x518
    github.com/revel/revel.Run(0x0)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server.go:88 +0x1ec
    github.com/leanote/leanote/app/tmp/run.Run(0x0)
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/tmp/run/run.go:36 +0x2c
    main.main()
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/tmp/main.go:24 +0xcc
    
    goroutine 21 [chan receive]:
    gopkg.in/natefinch/lumberjack%2ev2.(*Logger).millRun(0x4000092c60)
            /home/jim/go/pkg/mod/gopkg.in/natefinch/[email protected]/lumberjack.go:379 +0x44
    created by gopkg.in/natefinch/lumberjack%2ev2.(*Logger).mill.func1
            /home/jim/go/pkg/mod/gopkg.in/natefinch/[email protected]/lumberjack.go:390 +0x8c
    
    goroutine 28 [select]:
    gopkg.in/mgo%2ev2.(*mongoCluster).syncServersLoop(0x400012c300)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/cluster.go:394 +0x408
    created by gopkg.in/mgo%2ev2.newCluster
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/cluster.go:78 +0x220
    
    goroutine 150 [syscall]:
    syscall.Syscall6(0x16, 0x9, 0x400098fa08, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/syscall/asm_linux_arm64.s:35 +0x10
    golang.org/x/sys/unix.EpollWait(0x9, 0x400098fa08, 0x7, 0x7, 0xffffffffffffffff, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/golang.org/x/[email protected]-97ca703d548d/unix/zsyscall_linux_arm64.go:56 +0x94
    github.com/fsnotify/fsnotify.(*fdPoller).wait(0x40001b49a0, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify_poller.go:87 +0xa4
    github.com/fsnotify/fsnotify.(*Watcher).readEvents(0x40003d8780)
            /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify.go:193 +0x268
    created by github.com/fsnotify/fsnotify.NewWatcher
            /home/jim/go/pkg/mod/github.com/fsnotify/[email protected]/inotify.go:60 +0x344
    
    goroutine 5 [sleep]:
    time.Sleep(0x37e11d600)
            /home/jim/golang/go/src/runtime/time.go:193 +0xcc
    gopkg.in/mgo%2ev2.(*mongoServer).pinger(0x40006a2000, 0x59ff01)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/server.go:301 +0x170
    created by gopkg.in/mgo%2ev2.newServer
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/server.go:89 +0x1f0
    
    goroutine 7 [IO wait]:
    internal/poll.runtime_pollWait(0x7f087c26b8, 0x72, 0x4000b2f9c8)
            /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
    internal/poll.(*pollDesc).wait(0x40005ac298, 0x72, 0xffffffffffffff00, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
    internal/poll.(*pollDesc).waitRead(0x40005ac298, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
    internal/poll.(*FD).Read(0x40005ac280, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
    net.(*netFD).Read(0x40005ac280, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
    net.(*conn).Read(0x400026a038, 0x4000352180, 0x24, 0x24, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/net.go:183 +0x78
    gopkg.in/mgo%2ev2.fill(0x9dc010, 0x400026a038, 0x4000352180, 0x24, 0x24, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:535 +0x5c
    gopkg.in/mgo%2ev2.(*mongoSocket).readLoop(0x40006a20e0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:551 +0xd0
    created by gopkg.in/mgo%2ev2.newSocket
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:194 +0x2e8
    
    goroutine 163 [runnable]:
    github.com/revel/revel.(*SessionCookieEngine).Decode(0x4000308068, 0x4000461380)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/session_adapter_cookie.go:56 +0xb8
    github.com/revel/revel.SessionFilter(0x4000461380, 0x40003cdf50, 0x6, 0x6)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/session_filter.go:11 +0x4c
    github.com/revel/revel.ParamsFilter(0x4000461380, 0x40003cdf48, 0x7, 0x7)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/params.go:179 +0xf4
    github.com/revel/revel.FilterConfiguringFilter(0x4000461380, 0x40003cdf40, 0x8, 0x8)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/filterconfig.go:211 +0x178
    github.com/leanote/leanote/app/lea/route.RouterFilter(0x4000461380, 0x40003cdf38, 0x9, 0x9)
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:99 +0x658
    github.com/revel/revel.PanicFilter(0x4000461380, 0x40003cdf30, 0xa, 0xa)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4
    github.com/revel/revel.glob..func33(0x4000461380, 0x40003cdf28, 0xb, 0xb)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c
    github.com/revel/revel.handleInternal(0x9d2878, 0x400035d908)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8
    github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x400056e700, 0x4000938b00)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474
    github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x400056e700, 0x4000938b00)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8
    github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x400056e700, 0x4000938b00)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44
    net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x400056e700, 0x4000938b00)
            /home/jim/golang/go/src/net/http/server.go:2049 +0x40
    net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x400056e700, 0x4000938b00)
            /home/jim/golang/go/src/net/http/server.go:2867 +0x244
    net/http.(*conn).serve(0x40001d6000, 0x9d87a8, 0x4000156080)
            /home/jim/golang/go/src/net/http/server.go:1932 +0x1670
    created by net/http.(*Server).Serve
            /home/jim/golang/go/src/net/http/server.go:2993 +0x78c
    
    goroutine 178 [syscall]:
    os/signal.signal_recv(0x0)
            /home/jim/golang/go/src/runtime/sigqueue.go:168 +0xcc
    os/signal.loop()
            /home/jim/golang/go/src/os/signal/signal_unix.go:23 +0x28
    created by os/signal.Notify.func1.1
            /home/jim/golang/go/src/os/signal/signal.go:151 +0x48
    
    goroutine 179 [chan receive]:
    github.com/revel/revel.(*GoHttpServer).Event.func1(0x40005b3360)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:221 +0x44
    created by github.com/revel/revel.(*GoHttpServer).Event
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:220 +0x108
    
    goroutine 225 [IO wait]:
    internal/poll.runtime_pollWait(0x7f087c2400, 0x72, 0x4000144468)
            /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
    internal/poll.(*pollDesc).wait(0x4000438318, 0x72, 0xffffffffffffff00, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
    internal/poll.(*pollDesc).waitRead(0x4000438318, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
    internal/poll.(*FD).Read(0x4000438300, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
    net.(*netFD).Read(0x4000438300, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
    net.(*conn).Read(0x40000c4040, 0x4000813631, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/net.go:183 +0x78
    net/http.(*connReader).backgroundRead(0x4000813620)
            /home/jim/golang/go/src/net/http/server.go:672 +0x84
    created by net/http.(*connReader).startBackgroundRead
            /home/jim/golang/go/src/net/http/server.go:668 +0x100
    
    goroutine 154 [runnable]:
    net/http.(*connReader).backgroundRead(0x4000470360)
            /home/jim/golang/go/src/net/http/server.go:671
    created by net/http.(*connReader).startBackgroundRead
            /home/jim/golang/go/src/net/http/server.go:668 +0x100
    
    goroutine 274 [IO wait]:
    internal/poll.runtime_pollWait(0x7f087c24e8, 0x72, 0x4000146c68)
            /home/jim/golang/go/src/runtime/netpoll.go:222 +0x50
    internal/poll.(*pollDesc).wait(0x4000438098, 0x72, 0xffffffffffffff00, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:87 +0x90
    internal/poll.(*pollDesc).waitRead(0x4000438098, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_poll_runtime.go:92 +0x3c
    internal/poll.(*FD).Read(0x4000438080, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/internal/poll/fd_unix.go:166 +0x320
    net.(*netFD).Read(0x4000438080, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/fd_posix.go:55 +0x54
    net.(*conn).Read(0x40000c4038, 0x4000154251, 0x1, 0x1, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/net.go:183 +0x78
    net/http.(*connReader).backgroundRead(0x4000154240)
            /home/jim/golang/go/src/net/http/server.go:672 +0x84
    created by net/http.(*connReader).startBackgroundRead
            /home/jim/golang/go/src/net/http/server.go:668 +0x100
    
    goroutine 275 [runnable]:
    gopkg.in/mgo%2ev2.(*mongoSocket).Query(0x40006a20e0, 0x400097cb80, 0x1, 0x1, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:387 +0x1b8
    gopkg.in/mgo%2ev2.(*mongoSocket).SimpleQuery(0x40006a20e0, 0x40009740e0, 0x0, 0x0, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/socket.go:363 +0x288
    gopkg.in/mgo%2ev2.(*Database).run(0x40003d4018, 0x40006a20e0, 0x80a260, 0x40003d4030, 0x0, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:3261 +0x2cc
    gopkg.in/mgo%2ev2.(*Database).Run(0x40003d4018, 0x7e4c20, 0x9c1438, 0x0, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:656 +0x110
    gopkg.in/mgo%2ev2.(*Session).Run(0x400021f040, 0x7e4c20, 0x9c1438, 0x0, 0x0, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:2014 +0x70
    gopkg.in/mgo%2ev2.(*Session).Ping(0x400021f040, 0x0, 0x0)
            /home/jim/go/pkg/mod/gopkg.in/[email protected]/session.go:2043 +0x48
    github.com/leanote/leanote/app/db.CheckMongoSessionLost()
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/db/Mgo.go:382 +0x30
    github.com/leanote/leanote/app/lea/route.RouterFilter(0x40004611e0, 0x40003cdf38, 0x9, 0x9)
            /home/jim/leanote/leanote-of-unofficial-nolicensed/app/lea/route/Route.go:52 +0x1d4
    github.com/revel/revel.PanicFilter(0x40004611e0, 0x40003cdf30, 0xa, 0xa)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/panic.go:21 +0xc4
    github.com/revel/revel.glob..func33(0x40004611e0, 0x40003cdf28, 0xb, 0xb)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/watcher.go:298 +0x13c
    github.com/revel/revel.handleInternal(0x9d2878, 0x400035d7e8)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server-engine.go:193 +0x4f8
    github.com/revel/revel.(*GoHttpServer).handleMux(0x40005b3360, 0x9d7430, 0x4000974000, 0x4000726000)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:158 +0x474
    github.com/revel/revel.(*GoHttpServer).Handle(0x40005b3360, 0x9d7430, 0x4000974000, 0x4000726000)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:104 +0xa8
    github.com/revel/revel.(*GoHttpServer).Init.func3(0x9d7430, 0x4000974000, 0x4000726000)
            /home/jim/go/pkg/mod/github.com/revel/[email protected]/server_adapter_go.go:57 +0x44
    net/http.HandlerFunc.ServeHTTP(0x400038a980, 0x9d7430, 0x4000974000, 0x4000726000)
            /home/jim/golang/go/src/net/http/server.go:2049 +0x40
    net/http.serverHandler.ServeHTTP(0x400006a000, 0x9d7430, 0x4000974000, 0x4000726000)
            /home/jim/golang/go/src/net/http/server.go:2867 +0x244
    net/http.(*conn).serve(0x40001d6280, 0x9d87a8, 0x4000a3c7c0)
            /home/jim/golang/go/src/net/http/server.go:1932 +0x1670
    created by net/http.(*Server).Serve
            /home/jim/golang/go/src/net/http/server.go:2993 +0x78c
    
    goroutine 276 [runnable]:
    net/textproto.(*Reader).ReadMIMEHeader(0x4000b0fe30, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/textproto/reader.go:531 +0x554
    net/http.readRequest(0x40009275c0, 0x101000, 0x40007f2b00, 0x0, 0x0)
            /home/jim/golang/go/src/net/http/request.go:1074 +0x5b8
    net/http.(*conn).readRequest(0x40001d63c0, 0x9d87a8, 0x4000b010c0, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/http/server.go:966 +0x3dc
    net/http.(*conn).serve(0x40001d63c0, 0x9d87a8, 0x4000b010c0)
            /home/jim/golang/go/src/net/http/server.go:1858 +0xaf0
    created by net/http.(*Server).Serve
            /home/jim/golang/go/src/net/http/server.go:2993 +0x78c
    
    goroutine 277 [runnable]:
    vendor/golang.org/x/net/http/httpguts.isCTL(0x25, 0x0)
            /home/jim/golang/go/src/vendor/golang.org/x/net/http/httpguts/httplex.go:183 +0x6c
    vendor/golang.org/x/net/http/httpguts.ValidHeaderFieldValue(0x40009e9200, 0x210, 0x4000897700)
            /home/jim/golang/go/src/vendor/golang.org/x/net/http/httpguts/httplex.go:307 +0x68
    net/http.(*conn).readRequest(0x40001d6500, 0x9d87a8, 0x4000b01000, 0x0, 0x0, 0x0)
            /home/jim/golang/go/src/net/http/server.go:997 +0x95c
    net/http.(*conn).serve(0x40001d6500, 0x9d87a8, 0x4000b01000)
            /home/jim/golang/go/src/net/http/server.go:1858 +0xaf0
    created by net/http.(*Server).Serve
            /home/jim/golang/go/src/net/http/server.go:2993 +0x78c
    
    
    type-bug priority-should effort-unknown status-needs-testing resolved 
    opened by wiselike 3
Releases(v1.1.0)
  • v1.1.0(Apr 12, 2022)

    [revel/revel]

    • bc0e27f Merge pull request #1552 from revel/1542_recursive_call
    • d202b93 Merge pull request #1448 from golddranks/master
    • 859e5b4 Merge pull request #1511 from jiro4989/patch-1
    • 90489b1 Merge pull request #1523 from KoichiWada/handle-sigterm
    • 347610c Merge branch 'develop' into handle-sigterm
    • 942bd2e Merge pull request #1525 from mikyk10/feature/adding-mime-compress
    • 2cb950f Merge pull request #1543 from dhiemaz/fixing-typos
    • aed0d1e Merge pull request #1550 from revel/bugfix/readme-install
    • bc89379 Fixed log recursive call There was a recusive loop in the logger, this fixes it closes #1542
    • aa8a94d Merge pull request #1546 from braineet/master
    • 741d2c8 Corrects install command for new version of go
    • 65db3c0 Merge pull request #1549 from revel/bugfix/session-uuid
    • 624f341 Merge branch 'develop' into bugfix/session-uuid
    • 5e99db8 Refactors session uuid to use google's package
    • 30f3424 Correction redis import
    • f934412 fixing typos
    • f261091 Added a MIME type for compressableMimes
    • 9907376 Handle SIGTERM for graceful shutdown.
    • 413dda3 Merge pull request #1518 from ptman/lint
    • 45a4413 More lint fixes and dead code removal
    • 3799c55 Merge pull request #1514 from ptman/lint
    • 655927a Removed go 1.12 added go 1.15
    • 060e640 Fix misspellings and some lint errors
    • 921e1b4 Fix URL (http -> https)
    • e12cd0e develop v1.1.0-dev
    • a29f37c Fix a bug when binding to pointer

    [revel/cmd]

    • 86b4670 Update README.md
    • bc376fb Merge pull request #211 from lujiacn/develop
    • 5c8ac53 Merge branch 'develop' into develop
    • c674084 Merge pull request #201 from ptman/lint
    • cfe1d97 Merge branch 'develop' into lint
    • 7f9f658 Merge pull request #209 from glaslos/patch-1
    • 126d20c Merge pull request #210 from revel/build_process_update
    • 111264c updated go.mod
    • 4087c49 updated golang.org/x/tools, to avoid internal error: package xxx without types was imported from ...
    • 3602eb4 Merge branch 'develop' into patch-1
    • 192fc66 Merge pull request #200 from julidau/develop
    • 5689f86 Merge pull request #204 from shinypb/master
    • 6dba0c3 Fix bad error syntax An wrapped error message in the cmd module was referencing the wrong parameter value to be built closes revel/revel#1532
    • bb926f3 Added additional pattern to test against Another different missing pacakge error thrown that can be detected and added This error occurs because a package may have been stripped down when originally loaded
    • 3cd5ebb Updated launch scripts
    • 25dc05b Updated Launch code Added output to error stack, so terminal errors are displayed Ficed c.Verbose, it was changed to an array which causes issues launching Removed . notation from doing anything special. This was already replaced with the -p CLI option Added documentaiton on adding the package name Started watcher with force refresh.
    • 0a40a20 Merge pull request #208 from notzippy/build_process_update
    • fcc1319 Fixing type
    • ea5acb7 Updated shared build environments Updated check for errors. Updated go.mod Added .vscode launch
    • 25d6352 Get rid of redundant space in the output of revel new -a
    • ddec572 More linting
    • 7a91d0c interrupt process on windows as well
    • b562bd2 Merge pull request #199 from ptman/lint
    • bf17a71 Merge branch 'develop' into lint
    • 3d924a0 Lint fixes
    • d64c7f1 develop v1.1.0-dev

    [revel/config]

    • no changes

    [revel/modules]

    • 852ea71 Merge branch 'master' into develop
    • 789324e Merge pull request #105 from ptman/lint
    • 0a9a7f4 Update .travis.yml
    • 8dbd171 Lint fixes
    • 464e072 develop v1.1.0-dev

    [revel/cron]

    • 031e64e Merge pull request #5 from ptman/lint
    • 7cfc261 Lint fixes

    [revel/examples]

    • e51ed5a Merge pull request #54 from realbucksavage/master
    • c555714 Merge pull request #58 from teitei-tk/update_gorp_link
    • 24ed869 Merge pull request #62 from ptman/lint
    • 5ec13f7 More lint fixes
    • b14432a Merge branch 'develop' into lint
    • a33af07 Merge pull request #59 from obsti8383/master
    • 46ae3a6 Removed go 1.12, added 1.15
    • ced52ae Lint and revel 1.0.0 fixes
    • b245628 revert to old go.sum
    • b6ea1ec upgrade references to revel framework to 1.0.0 in go.mod; fixes compile errors
    • 8353712 update gorp link
    • be755f5 Indented the code.

    [revel/revel.github.io]

    • 32d1cd9 Merge branch 'master' into develop
    • e72f206 Merge pull request #197 from revel/update_go_version
    • 1ae75e8 Merge branch 'develop' into update_go_version
    • 75172ea develop v1.1.0-dev

    [revel/heroku-buildpack-go-revel]

    • no changes
    Source code(tar.gz)
    Source code(zip)
  • v1.0.0(Jul 12, 2020)

    [revel/revel]

    • 3d1b0c3 Merge pull request #1497 from lujiacn/master
    • ff2da7e Merge pull request #1498 from aacapella/feature/same-site-cookies
    • c6c4c35 SameSite cookie support
    • bfad570 Update server_adapter_go.go
    • ff43c73 Merge pull request #1491 from notzippy/go-mod
    • dbe9fee Update .travis.yml
    • 38b0687 Fixed paths for test cases
    • 39523bf Enhanced logging
    • 59b8375 Changes to Revel for go.mod support Modified module lookup to handle lookups using the app.conf (before relied on source file) Added extra logging for routes error handling
    • 1053f49 Merge pull request #1443 from lujiacn/develop
    • dcafb9e Merge pull request #1488 from notzippy/go-mod
    • e30c8da Merge pull request #1483 from goevexx/feature/fix-issue-1482
    • 50e70f9 Updated revel to receive paths passed in Updated watcher to use master branch
    • d581f71 change import to fix issue 1482
    • fdc724a Merge pull request #1462 from torden/feature/fix_puretextstrict
    • fe4861c Fix (#1458) the undetected self-closing tags in isPureTextStrict Fix (#1458) the always uses STRICT mode in PureText.IsSatisFied
    • ae3895a added wasm mime-type
    • 45ec814 Merge pull request #1439 from mukeshjeengar/hotfix/log-rotation-fixed
    • d3a76ed log rotation fixed
    • 2eb9067 Merge pull request #1413 from nevkontakte/patch-1
    • ccf085e Merge pull request #1434 from dmjones/fix-1433
    • 34e886a Don't invoke action when Before returns value
    • 5b70626 Merge pull request #1427 from SYM01/hotfix/avoid-dos
    • d160ecb fix issue #1424
    • db7db5b remove unneccsary code assignment to nil
    • 8bff5bb Update controller.go
    • 16f5fef Remove a stray println call.
    • 60c3d7a develop v1.0.0-dev

    [revel/cmd]

    • d8117a3 Merge pull request #186 from notzippy/go-mod
    • 6371373 Removed version update Version control is maintained through go.mod file Modified harness to only kill the application if not responded after 60 seconds in windows
    • 28ac65f Merge pull request #185 from notzippy/go-mod
    • 5070fb8 Fixed issue with new and run flag Updated tests to run final test in non gopath, with new name
    • 904cfa2 Added some informational messages while download
    • 223bd3b Added manual scan on packages in app folder This allows for source code generation. Packages in /app folder are scanned manually as opposed to the packages.Load scan which will fast fail on compile error, and leave you with go files with no syntax.
    • 4987ee8 Added verbose logging to building / testing a no-vendor app Removed section which raises an error when examining packages, we dont need to check for errors on foreign packages since we are importing only a slice of the data
    • 4bab440 Updated Revel command Added a check to see if harness had already started, saves a recompile on load Added check to source info for local import renames Removed the go/build check for path and just check existence of the path Formatting updates
    • 741f492 Updated scanner Removed scanning all the import statements, this is not needed Added recursive scan for revel import path to pick up testunits
    • 60b88a4 Merge pull request #180 from notzippy/go-mod
    • 49eef29 Build and Historic build updates Modified GOPATH to not modify build with go.mod Updated go.mod to version 1.12 Updated harness to setup listener before killing process Updated notvendored flag to --no-vendor Updated command_config to ensure no-vendor can be build Added additional checks in source path lookup
    • 9d3a554 Updates Updated NotVendored flag Updated travis matrix Updated build log
    • 36bd6b9 Corrected flags
    • 1d9df25 Moved test cases to run last
    • ad694c0 Debug travis
    • fb4b565 Debug travis Added verbose flag so we can see what is occurring, Removed checkout for revel, not needed anymore
    • 20d5766 Added gomod-flags Added a gomod-flags parameter which allows you to run go mod commands on the go.mod file before the build is performed. This allows for development environments.
    • 0920905 Updated to build go 1.12 and up Modified to use fsnotify directlyUpdated travis to not use go deps
    • 31cb64e Check-in of command_test, remaps the go mod command to use the develop branch.
    • 33abc47 Fixed remaining test
    • 86736d6 Updated formating Ran through testing individually for vendored Revel applications
    • 07d6784 Restructured command config Removed go/build reference in clean
    • c1aee24 Corrected version detection, so that equal versions match
    • f2b54f5 Updated sourceinfo Added packagepathmap to the SourceInfo, this in turn allows the RevelCLI app command to pass the source paths directly to Revel directly Added default to build to be "target" of the current folder Renamed source processor
    • 3f54665 Added processor to read the functions in the imported files, and populate the SourceInfo object the same as before
    • 548cbc1 Upatede Error type to SourceError Added processor object to code Verified compile errors appearing Signed-off-by: [email protected]
    • 9a9511d Updated so revel new works and revel run starts parsing the source.
    • acb8fb6 Initial commit to go mod
    • d201463 Merge pull request #176 from xXLokerXx/fix_windows_path
    • 773f688 Merge branch 'develop' into fix_windows_path
    • ca4cfa5 Merge pull request #165 from kumakichi/fixed_import_C
    • 4368690 Merge pull request #179 from Laur1nMartins/Laur1nMartins/fix-linkerFlags
    • cf2e617 Merge branch 'develop' into Laur1nMartins/fix-linkerFlags
    • 424474a Fix linker flags inclusion in build comamnd
    • 6d8fcd9 Fix sintax error
    • aa459c1 Fix sintaxis error
    • 0b23b3e Fix complexity
    • 3f65e1e acept slash and inverted slash in src path validation
    • 7dce3d8 fixed import "C"
    • 5c8d5bc develop v1.0.0-dev

    [revel/config]

    • no changes

    [revel/modules]

    • e1fdc01 Merge pull request #103 from revel/master
    • 80d53e2 Merge pull request #102 from notzippy/go-mod
    • 2048fce Updated build processor
    • 19728d3 Added gomod removed vendor specific imports
    • 515369e develop v1.0.0-dev

    [revel/cron]

    • no changes

    [revel/examples]

    • 2d2968c Merge pull request #57 from notzippy/go-mod
    • dc75997 Updated examples Updated booking app to go.mod Updated chat, facebook, others app to add in go file in the root Updated travis to run tests in windows Updated travis to exclude testing fasthttp on windows
    • 5b25a51 Removed persona from project, this function no longer exists in browsers

    [revel/revel.github.io]

    • 6cd3647 Merge pull request #196 from aacapella/feature/same-site-cookies
    • 9f8f537 Merge pull request #191 from dmjones/session-value-not-found-returns-error
    • d79c912 Merge pull request #194 from DGKSK8LIFE/patch-1
    • 3911471 Merge pull request #195 from notzippy/develop
    • 67b088f Same site cookie setting
    • f5c5cb0 Corrected issues
    • bba502d Update for gomod docs
    • 9765ef0 Merge remote-tracking branch 'revel/master' into develop
    • eedc235 fixed spelling error
    • 9b9270a Explain return value when session value not found
    • 24abe9a Merge pull request #184 from manfordbenjamin/master
    • 4969200 Change logo and apply blue theme style to all pages
    • 844fe5d Revamp homepage
    • ef54af7 develop v1.0.0-dev

    [revel/heroku-buildpack-go-revel]

    • no changes
    Source code(tar.gz)
    Source code(zip)
  • v0.21.0(Oct 30, 2018)

    New items

    • Session Engine support You can now define your own session engine. By default the cookie engine is the one used for the session, but with this change you can implement your own. Also controller.Session is now a map[string]interface{} which means you can place any object that can be serialized to a string.
    • Added http mux support you can now integrate Revel with packages that have their own HTTP muxers. This allows you to integrate with Hugo, Swagger or any suite of software that is out there.
    • revel.controller.reuse app.conf option to turn on / off reuse of the controllers. Defaults to true

    Breaking changes

    controller.Session is now a map[string]interface{} (previously was map[string]string) this means existing code needs to cast any values they pull from the session

    	if username, ok := c.Session["user"]; ok { // username is a string type
    		return c.getUser(username)
    	}
    

    changes to

    	if username, ok := c.Session["user"]; ok { // username is an interface{} type
    		return c.getUser(username.(string))
    	}
    

    Deprecated log points removed revel.ERROR, revel.TRACE, revel.DEBUG, revel.WARN have been removed

    Function name change revel.OnAppStop Replaced revel.OnAppShutdown

    revel.SimpleStack was moved to github.com/revel/revel/utils.SimpleStack

    New packages required

    Revel Framework

    • github.com/twinj/uuid (revel/revel session ID generation)

    Revel Cmd

    • github.com/kr/pty (revel/cmd capture output of dep tool)

    Package changes

    Revel Framework

    • Added stack to errors Added stack information to router when forumlating error
    • Fix spelling errors from go report
    • Removed deprecated loggers
    • Updated travis , made windows success optional
    • Exposed StopServer function to public Changed session filter to use empty call
    • 577ae8b Enhancement pack for next release Added session engine support, and the session cookie engine breaking change revel.Session was map[string]string now is map[string]interface{}
    • Updated shutdown to support windows environment
    • Patched shutdown support to make it work through the event engine
    • Added ENGINE_SHUTDOWN_REQUEST to events, raising this event will cause the server to shutdown
    • Assigned Server engines to receive revel.Events Added revel.OnAppStop hooks -
    • Normalized startup / shutdown hooks into their own package

    Revel Cmd

    • Modified run command to translate symlinks to absolute paths
    • Tool updates Updated tool to give more meaningful errors
    • Added file system as an option to fetch the skeleton from
    • Allow windows to fail on travis
    • run Command will choose CWD if no additional arguments are supplied
    • Added Revel version check, compatible lists are in model/version

    Revel Modules

    • Updated CSRF test cases
    • Added travis test for modified test engine
    • Updated server-engine modules to support OnAppStop functionality.
    • Reorganization, readme updates Moved auth example into its own folder
    • Updated root readme
    • Updated CSRF

    Revel Examples

    • Fixed issue with error checking closes websocket in chat
    • Updated booking module to work with changed session
    • Updated to remove any references to old revel.log variables
    Source code(tar.gz)
    Source code(zip)
  • v0.20.0(Sep 23, 2018)

    New items

    • Updated minimum Go requirements to Go 1.8

    Revel Cmd changes

    See manual for more information on the flags and new features

    • Rewrote revel/cmd package so it has no dependencies on revel/revel - future releases for revel/cmd will not be on the same schedule as revel/revel
    • Added flag support to revel/cmd ,
    • Added automatic vendor creation flag, when enabled a vendor folder will be added and used to the project
    • Added [DEFAULT] section to message skeleton so multiple lines work
    • If port specified is 0 then proxy can will run on a random free port
    • Split main file into two files so it may be invoked using other methods
    • Added ability to only monitor and update build files (without running a proxy)
    • Auto download revel/revel, revel/cmd - if you point your GOPATH to an empty directory the revel tool will still be able to create a new project
    • Made application path smarter. Now supports absolute paths and relatives paths.
    • modified revel run to pass in json code to the revel.Init function in place of the mode field. This allows for dynamic information to be passed to the Revel Server. This can be disabled by using this flag --historic-run-mode
    • modified revel new added -V to auto create the vendor folder inside the application along with the Gopkg.toml file.
    • modified revel new added -r to run the application after creating it.

    revel/module

    • Enhanced gorp module to make database schema available
    • Added server-engine server-engine/gohttptest and a testsuite file that implements all the methods from revel/testsuite. This test engine as an alpha implementation to be able to run go test from the command line. Meaning your tests can now live beside the controller. An example testsuite is here
    • Updated static module, moved a structure into a model package

    revel/revel

    • Added startup fail REVEL_FAILURE event
    • Added HTTP_REQUEST_CONTEXT fetch
    • Added websockets Message.Send / Message.Receive functions.
    • Enhanced required validator
    • Graceful shutdown added. By doing a revel.RaiseEvent()

    Breaking Changes

    • Request.Context() map[string]interface() renamed to Request.Args() map[string]interface() new function added which returns the request.Context for the server-engine that supports it Request.Context() context.Context revel.EventHandler signature was func(typeOf int, value interface{}) (responseOf int) now it is func(typeOf Event, value interface{}) (responseOf EventResponse)
    Source code(tar.gz)
    Source code(zip)
    revel-v21(10.45 MB)
  • v0.19.1(Mar 21, 2018)

  • v0.19.0(Feb 7, 2018)

    Maintenance Release

    This release is focused on improving the security and resolving some issues.

    There are no breaking changes from version 0.18

    [revel/cmd]

    • Improved vendor folder detection revel/cmd#117
    • Added ordering of controllers so order remains consistent in main.go revel/cmd#112
    • Generate same value of AppVersion regardless of where Revel is run revel/cmd#108
    • Added referrer policy security header revel/cmd#114

    [revel/modules]

    • Added directory representation to static module revel/modules#46
    • Gorp enhancements (added abstraction layer for transactions and database connection so both can be used), Added security fix for CSRF module revel/modules#68
    • Added authorization configuration options to job page revel/modules#44

    [revel/examples]

    • General improvements and examples added revel/examples#39 revel/examples#40
    Source code(tar.gz)
    Source code(zip)
  • v0.18.0(Nov 1, 2017)

    New items

    • Server Engine revel/revel#998 The server engine implementation is described in the docs
    • Go dependencies revel/meta#11 Update your gopath with the dependencies files in the revel/meta package. Checkout any version of revel from 0.14 till now
    • Allow binding to a structured map. revel/revel#998 Have a structure inside a map object which will be realized properly from params
    • Gorm module revel/modules/#51 Added transaction controller
    • Gorp module revel/modules/#52
    • Autorun on startup in develop mode revel/cmd#95 Start the application without doing a request first using revel run ....
    • Logger update revel/revel#1213 Configurable logger and added context logging on controller via controller.Log
    • Before after finally panic controller method detection revel/revel#1211 Controller methods will be automatically detected and called - similar to interceptors but without the extra code
    • Float validation revel/revel#1209 Added validation for floats
    • Timeago template function revel/revel#1207 Added timeago function to Revel template functions
    • Authorization to jobs module revel/module#44 Added ability to specify authorization to access the jobs module routes
    • Add MessageKey, ErrorKey methods to ValidationResult object revel/revel#1215 This allows the message translator to translate the keys added. So model objects can send out validation codes
    • Vendor friendlier - Revel recognizes and uses deps (to checkout go libraries) if a vendor folder exists in the project root.
    • Updated examples to use Gorp modules and new loggers

    Breaking Changes

    • http.Request is no longer contained in revel.Request revel.Request remains functionally the same but you cannot extract the http.Request from it. You can get the http.Request from revel.Controller.Request.In.GetRaw().(*http.Request)

    • http.Response.Out Is not the http.Response and is deprecated, you can get the output writer by doing http.Response.GetWriter(). You can get the http.ResponseWriter from revel.Controller.Response.Out.Server.GetRaw().(*http.ResponseWriter)`

    • Websocket changes. revel.ServerWebsocket is the new type of object you need to declare for controllers which should need to attach to websockets. Implementation of these objects have been simplified

    Old

    
    func (c WebSocket) RoomSocket(user string, ws *websocket.Conn) revel.Result {
    	// Join the room.
    	subscription := chatroom.Subscribe()
    	defer subscription.Cancel()
    
    	chatroom.Join(user)
    	defer chatroom.Leave(user)
    
    	// Send down the archive.
    	for _, event := range subscription.Archive {
    		if websocket.JSON.Send(ws, &event) != nil {
    			// They disconnected
    			return nil
    		}
    	}
    
    	// In order to select between websocket messages and subscription events, we
    	// need to stuff websocket events into a channel.
    	newMessages := make(chan string)
    	go func() {
    		var msg string
    		for {
    			err := websocket.Message.Receive(ws, &msg)
    			if err != nil {
    				close(newMessages)
    				return
    			}
    			newMessages <- msg
    		}
    	}()
    

    New

    func (c WebSocket) RoomSocket(user string, ws revel.ServerWebSocket) revel.Result {
    	// Join the room.
    	subscription := chatroom.Subscribe()
    	defer subscription.Cancel()
    
    	chatroom.Join(user)
    	defer chatroom.Leave(user)
    
    	// Send down the archive.
    	for _, event := range subscription.Archive {
    		if ws.MessageSendJSON(&event) != nil {
    			// They disconnected
    			return nil
    		}
    	}
    
    	// In order to select between websocket messages and subscription events, we
    	// need to stuff websocket events into a channel.
    	newMessages := make(chan string)
    	go func() {
    		var msg string
    		for {
    			err := ws.MessageReceiveJSON(&msg)
    			if err != nil {
    				close(newMessages)
    				return
    			}
    			newMessages <- msg
    		}
    	}()
    
    • GORM module has been refactored into modules/orm/gorm

    Deprecated mathods

    • revel.Request.FormValue() Is deprecated, you should use methods in the controller.Params to access this data
    • revel.Request.PostFormValue() Is deprecated, you should use methods in the controller.Params.Form to access this data
    • revel.Request.ParseForm() Is deprecated - not needed
    • revel.Request.ParseMultipartForm() Is deprecated - not needed
    • revel.Request.Form Is deprecated, you should use the controller.Params.Form to access this data
    • revel.Request.MultipartForm Is deprecated, you should use the controller.Params.Form to access this data
    • revel.TRACE, revel.INFO revel.WARN revel.ERROR are deprecated. Use new application logger revel.AppLog and the controller logger controller.Log. See logging for more details.

    Features

    • Pluggable server engine support. You can now implement your own server engine. This means if you need to listen to more then 1 IP address or port you can implement a custom server engine to do this. By default Revel uses GO http server, but also available is fasthttp server in the revel/modules repository. See the docs for more information on how to implement your own engine.

    Enhancements

    • Controller instances are cached for reuse. This speeds up the request response time and prevents unnecessary garbage collection cycles.

    Bug fixes

    Source code(tar.gz)
    Source code(zip)
  • v0.17.1(Jul 14, 2017)

  • v0.17(Jul 12, 2017)

    CHANGELOG

    v0.17

    [revel/revel]

    • add-validation
    • i18-lang-by-param
    • Added namespace to routes, controllers
    • Added go 1.6 to testing
    • Adds the ability to set the language by a url parameter. The route file will need to specify the parameter so that it will be picked up
    • Changed url validation logic to regex
    • Added new validation mehtods (IPAddr,MacAddr,Domain,URL,PureText)

    [revel/cmd]

    • no changes

    [revel/config]

    • no changes

    [revel/modules]

    • Added Gorm module

    [revel/cron]

    • Updated cron task manager
    • Added ability to run a specific job, reschedules job if cron is running.

    [revel/examples]

    • Added Gorm module (Example)
    Source code(tar.gz)
    Source code(zip)
  • v0.16.0(Jun 7, 2017)

    Breaking Changes

    • CurrentLocaleRenderArg to CurrentLocaleViewArg for consistency
    • JSON requests are now parsed by Revel, if the content type is text/json or application/json. The raw data is available in Revel.Controller.Params.JSON. But you can also use the automatic controller operation to load the data like you would any structure or map. See here for more details

    Features

    • Modular Template Engine #1170
    • Pongo2 engine driver added revel/modules#39
    • Ace engine driver added revel/modules#40
    • Added i18n template support #746

    Enhancements

    • JSON request binding #1161
    • revel.SetSecretKey function added #1127
    • ResolveFormat now looks at the extension as well (this sets the content type) #936
    • Updated command to run tests using the configuration revel/cmd#61

    Bug fixes

    • Updated documentation typos revel/modules#37
    • Updated order of parameter map assignment #1155
    • Updated cookie lifetime for firefox #1174
    • Added test path for modules, so modules will run tests as well #1162
    • Fixed go profiler module revel/modules#20
    Source code(tar.gz)
    Source code(zip)
  • v0.15.0(May 12, 2017)

    Deprecating support for golang versions prior to 1.7

    Breaking Changes

    • None

    Features

    • None

    Enhancements

    • Update and improve docs revel/examples#17 revel/cmd#85

    Bug fixes

    • Prevent XSS revel/revel#1153
    • Improve error checking for go version detection revel/cmd#86
    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Mar 24, 2017)

    Changes since v0.13.0

    Breaking Changes

    • revel/revel:
      • change RenderArgs to ViewArgs PR #1135
      • change RenderJson to RenderJSON PR #1057
      • change RenderHtml to RenderHTML PR #1057
      • change RenderXml to RenderXML PR #1057

    Features

    • None

    Enhancements

    • None

    Bug Fixes

    • None
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Jun 7, 2016)

  • v0.13.0(Jun 6, 2016)

    Changes since v0.12.0

    Breaking Changes

    • revel/revel:
      • Application Config name changed from watcher.* to watch.* PR #992, PR #991

    Features

    • revel/revel:
      • Request access log PR #1059, PR #913, #1055
      • Messages loaded from modules too PR #828
    • revel/cmd:
      • Added revel version command emits the revel version and go version revel/cmd#19

    Enhancements

    • revel/revel:
      • Creates log directory if missing PR #1039
      • Added application/javascript to accepted headers PR #1022
      • You can change Server.Addr value via hook function PR #999
      • Improved deflate/gzip compressor PR #995
      • Consistent config name watch.* PR #992, PR #991
      • Defaults to HttpOnly and always secure cookies for non-dev mode #942, PR #943
      • Configurable server Read and Write Timeout via app config #936, PR #940
      • OnAppStart hook now supports order param too PR #935
      • Added PutForm and PutFormCustom helper method in testing.TestSuite #898
      • Validator supports UTF-8 string too PR #891, #841
      • Added InitServer method that returns http.HandlerFunc PR #879
      • Symlink aware processing Views, Messages and Watch mode PR #867, #673
      • Added i18n settings support unknown format PR #852
      • i18n: Make Message Translation pluggable PR #768
      • jQuery min-2.2.4 & Bootstrap min-3.3.6 version updated in skeleton/public #1063
    • revel/cmd:
      • Revel identifies current GOPATH and performs new command; relative to directory revel/revel#1004
      • Installs package dependencies during a build PR revel/cmd#43
      • Non-200 response of test case request will correctly result into error PR revel/cmd#38
      • Websockets SSL support in dev mode PR revel/cmd#32
      • Won't yell about non-existent directory while cleaning PR revel/cmd#31, #908
        • [x] non-fatal errors when building #908
      • Improved warnings about route generation PR revel/cmd#25
      • Command is Symlink aware PR revel/cmd#20
      • revel package & revel build now supports environment mode PR revel/cmd#14
      • revel clean now cleans generated routes too PR revel/cmd#6
    • revel/config:
      • Upstream robfig/config refresh and import path updated from github.com/revel/revel/config to github.com/revel/config, PR #868
      • Config loading order and external configuration to override application configuration revel/config#4 commit
      • Application config error will produce insight on error PR revel/config#3 commit
    • revel/modules:
      • Testrunner enhancements
        • Minor improvement on testrunner module PR #820, #895
        • Add Test Runner panels per test group PR revel/modules#12
    • revel/revel.github.io:
      • Update index.md and homepage (change how samples repo is installed) PR #85
      • Couple of UI improvements PR #93
      • Updated techempower benchmarks Round 11 URL
      • Docs updated for v0.13 release
    • Cross-Platform Support
      • Slashes should be normalized in paths #260, PR #1028, PR #928

    Bug Fixes

    • revel/revel:
      • Binder: Multipart io.Reader parameters needs to be closed #756
      • Default Date & Time Format correct in skeleton PR #1062, #878
      • Addressed with alternative for json: unsupported type: <-chan struct {} on Go 1.6 revel/revel#1037
      • Addressed one edge case, invalid Accept-Encoding header causes panic revel/revel#914
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(Mar 25, 2015)

    Changes since v0.11.3:

    Breaking Changes

    1. Add import path to new testing sub-package for all Revel tests. For example:
    package tests
    
    import "github.com/revel/revel/testing"
    
    type AppTest struct {
        testing.TestSuite
    }
    
    1. We've relocated modules to a dedicated repo. Make sure you update your conf/app.conf. For example, change:
    module.static=github.com/revel/revel/modules/static
    module.testrunner = github.com/revel/revel/modules/testrunner
    

    to the new paths:

    module.static=github.com/revel/modules/static
    module.testrunner = github.com/revel/modules/testrunner
    

    [ROADMAP] Focus: Improve Internal Organization

    The majority of our effort here is increasing the modularity of the code within Revel so that further development can be done more productively while keeping documentation up to date.

    • revel/revel.github.io
      • [x] Improve docs #43
    • revel/revel:
      • [x] Move the revel/revel/harness to the revel/cmd repo since it's only used during build time. #714
      • [x] Move revel/revel/modules to the revel/modules repo #785
      • [x] Move revel/revel/samples to the revel/samples repo #784
      • [x] testing TestSuite #737 #810
      • [x] Feature/sane http timeout defaults #837 PR#843 Bug Fix PR#860
      • [x] Eagerly load templates in dev mode #353 PR#844
      • [x] Add an option to trim whitespace from rendered HTML #800
      • [x] Remove built-in mailer in favor of 3rd party package #783
      • [x] Allow local reverse proxy access to jobs module status page for IPv4/6 #481 PR#6 PR#7
      • [x] Add default http.Status code for render methods. #728
      • [x] add domain for cookie #770 PR#882
      • [x] production mode panic bug #831 PR#881
      • [x] Fixes template loading order whether watcher is enabled or not #844
      • [x] Fixes reverse routing wildcard bug PR#886 #869
      • [x] Fixes router app start bug without routes. PR #855
      • [x] Friendly URL template errors; Fixes template url func "index out of range" when param is undefined #811 PR#880
      • [x] Make result compression conditional PR#888
      • [x] ensure routes are loaded before returning from OnAppStart callback PR#884
      • [x] Use "302 Found" HTTP code for redirect PR#900
      • [x] Fix broken fake app tests PR#899
      • [x] Optimize search of template names PR#885
    • revel/cmd:
      • [x] track current Revel version #418 PR#858
      • [x] log path error After revel build? #763
      • [x] Use a separate directory for revel project binaries #17 #819
      • [x] Overwrite generated app files instead of deleting directory #551 PR#23
    • revel/modules:
      • [x] Adds runtime pprof/trace support #9
    • Community Goals:
      • [x] Issue labels #545
        • [x] Sync up labels/milestones in other repos #721
      • [x] Update the Revel Manual to reflect current features
      • [x] RFCs to organize features #827

    Full list of commits

    Source code(tar.gz)
    Source code(zip)
  • v0.11.3(Jan 4, 2015)

    This is a minor release to address a critical bug (#824) in v0.11.2.

    Everybody is strongly encouraged to rebuild their projects with the latest version of Revel. To do it, execute the commands:

    $ go get -u github.com/revel/cmd/revel
    
    $ revel build github.com/myusername/myproject /path/to/destination/folder
    
    Source code(tar.gz)
    Source code(zip)
  • v0.11.2(Jan 4, 2015)

    This is a minor release to address a critical bug in v0.11.0.

    Everybody is strongly encouraged to rebuild their projects with the latest version of Revel. To do it, execute the commands:

    $ go get -u github.com/revel/cmd/revel
    
    $ revel build github.com/myusername/myproject /path/to/destination/folder
    
    Source code(tar.gz)
    Source code(zip)
  • v0.11.1(Oct 27, 2014)

  • v0.11.0(Oct 26, 2014)

    Note, Revel 0.11 requires Go 1.3 or higher.

    Changes since v0.10:

    [BUG] #729 Adding define inside the template results in an error (Changes how template file name case insensitivity is handled)

    [ENH] #769 Add swap files to gitignore [ENH] #766 Added passing in build flags to the go build command [ENH] #761 Fixing cross-compiling issue #456 setting windows path from linux [ENH] #759 Include upload sample's tests in travis [ENH] #755 Changes c.Action to be the action method name's letter casing per #635 [ENH] #754 Adds call stack display to runtime panic in browser to match console [ENH] #740 Redis Cache: Add timeouts. [ENH] #734 watcher: treat fsnotify Op as a bitmask [ENH] #731 Second struct in type revel fails to find the controller [ENH] #725 Testrunner: show response info [ENH] #723 Improved compilation errors and open file from error page [ENH] #720 Get testrunner path from config file [ENH] #707 Add log.colorize option to enable/disable colorize [ENH] #696 Revel file upload testing [ENH] #694 Install dependencies at build time [ENH] #693 Prefer extension over Accept header [ENH] #692 Update fsnotify to v1 API [ENH] #690 Support zero downtime restarts [ENH] #687 Tests: request override [ENH] #685 Persona sample tests and bugfix [ENH] #598 Added README file to Revel skeleton [ENH] #591 Realtime rebuild [ENH] #573 Add AppRoot to allow changing the root path of an application

    [FTR] #606 CSRF Support

    Full list of commits

    Source code(tar.gz)
    Source code(zip)
  • v0.10.0(Aug 10, 2014)

    Changes since v0.9.1:

    • [FTR] #641 - Add "X-HTTP-Method-Override" to router
    • [FTR] #583 - Added HttpMethodOverride filter to routes
    • [FTR] #540 - watcher flag for refresh on app start
    • [BUG] #681 - Case insensitive comparison for websocket upgrades (Fixes IE Websockets ...
    • [BUG] #668 - Compression: Properly close gzip/deflate
    • [BUG] #667 - Fix redis GetMulti and improve test coverage
    • [BUG] #664 - Is compression working correct?
    • [BUG] #657 - Redis Cache: panic when testing Ge
    • [BUG] #637 - RedisCache: fix Get/GetMulti error return
    • [BUG] #621 - Bugfix/router csv error
    • [BUG] #618 - Router throws exception when parsing line with multiple default string arguments
    • [BUG] #604 - Compression: Properly close gzip/deflate.
    • [BUG] #567 - Fixed regex pattern to properly require message files to have a dot in filename
    • [BUG] #566 - Compression fails ("unexpected EOF" in tests)
    • [BUG] #287 - Don't remove the parent folders containing generated code.
    • [BUG] #556 - fix for #534, also added url path to not found message
    • [BUG] #534 - Websocket route not found
    • [BUG] #343 - validation.Required(funtionCall).Key(...) - reflect.go:715: Failed to generate name for field.
    • [ENH] #643 - Documentation Fix in Skeleton for OnAppStart
    • [ENH] #674 - Removes custom eq template function
    • [ENH] #669 - Develop compress closenotifier
    • [ENH] #663 - fix for static content type not being set and defaulting to OS
    • [ENH] #658 - Minor: fix niggle with import statement
    • [ENH] #652 - Update the contributing guidelines
    • [ENH] #651 - Use upstream gomemcache again
    • [ENH] #650 - Go back to upstream memcached library
    • [ENH] #612 - Fix CI package error
    • [ENH] #611 - Fix "go vet" problems
    • [ENH] #610 - Added MakeMultipartRequest() to the TestSuite
    • [ENH] #608 - Develop compress closenotifier
    • [ENH] #596 - Expose redis cache options to config
    • [ENH] #581 - Make the option template tag type agnostic.
    • [ENH] #576 - Defer session instantiation to first set
    • [ENH] #565 - Fix #563 -- Some custom template funcs cannot be used in JavaScript cont...
    • [ENH] #563 - TemplateFuncs cannot be used in JavaScript context
    • [ENH] #561 - Fix missing extension from message file causing panic
    • [ENH] #560 - enhancement / templateFunc firstof
    • [ENH] #555 - adding symlink handling to the template loader and watcher processes
    • [ENH] #531 - Update app.conf.template
    • [ENH] #520 - Respect controller's Response.Status when action returns nil
    • [ENH] #519 - Link to issues
    • [ENH] #486 - Support for json compress
    • [ENH] #480 - Eq implementation in template.go still necessary ?
    • [ENH] #461 - Cron jobs not started until I pull a page
    • [ENH] #323 - disable session/set-cookie for Static.Serve()

    Full list of commits

    Source code(tar.gz)
    Source code(zip)
  • v0.9.1(Mar 2, 2014)

    Minor patch release to address a couple bugs.

    Changes since v0.9.0:

    • [BUG] #529 - Wrong path was used to determine existence of .git
    • [BUG] #532 - Fix typo for new type ValidEmail

    The full list of commits can be found here.

    Source code(tar.gz)
    Source code(zip)
  • v0.9.0(Feb 26, 2014)

    Revel GitHub Organization

    We've moved development of the framework to the @revel GitHub organization, to help manage the project as Revel grows. The old import path is still valid, but will not be updated in the future.

    You'll need to manually update your apps to work with the new import path. This can be done by replacing all instances of github.com/robfig/revel with github.com/revel/revel in your app, and running:

    $ cd your_app_folder
    $ go get -u github.com/howeyc/fsnotify  # needs updating
    $ go get github.com/revel/revel
    $ go get github.com/revel/cmd/revel     # command line tools have moved
    

    Note: if you have references to github.com/robfig/revel/revel in any files, you need to replace them with github.com/revel/cmd/revel before replacing github.com/robfig/revel! (note the prefix collision)

    If you have any trouble upgrading or notice something we missed, feel free to hop in the IRC channel (#revel on Freenode) or send the mailing list a message.

    Also note, the documentation is now at revel.github.io!

    Changes since v0.8:

    • [BUG] #522 - revel new bug
    • [BUG] - Booking sample error
    • [BUG] #504 - File access via URL security issue
    • [BUG] #489 - Email validator bug
    • [BUG] #475 - File watcher infinite loop
    • [BUG] #333 - Extensions in routes break parameters
    • [FTR] #472 - Support for 3rd part app skeletons
    • [ENH] #512 - Per session expiration methods
    • [ENH] #496 - Type check renderArgs[CurrentLocalRenderArg]
    • [ENH] #490 - App.conf manual typo
    • [ENH] #487 - Make files executable on revel build
    • [ENH] #482 - Retain input values after form valdiation
    • [ENH] #473 - OnAppStart documentation
    • [ENH] #466 - JSON error template quoting fix
    • [ENH] #464 - Remove unneeded trace statement
    • [ENH] #457 - Remove unneeded trace
    • [ENH] #508 - Support arbitrary network types
    • [ENH] #516 - Add Date and Message-Id mail headers

    The full list of commits can be found here.

    Source code(tar.gz)
    Source code(zip)
  • v0.8(Feb 26, 2014)

    Changes since v0.7:

    • [BUG] #379 - HTTP 500 error for not found public path files
    • [FTR] #424 - HTTP pprof support
    • [FTR] #346 - Redis Cache support
    • [FTR] #292 - SMTP Mailer
    • [ENH] #443 - Validator constructors to improve v.Check() usage
    • [ENH] #439 - Basic terminal output coloring
    • [ENH] #428 - Improve error message for missing RenderArg
    • [ENH] #422 - Route embedding for modules
    • [ENH] #413 - App version variable
    • [ENH] #153 - $GOPATH-wide file watching aka hot loading
    Source code(tar.gz)
    Source code(zip)
Owner
Revel Framework
Revel Framework
go-zero is a web and rpc framework written in Go. It's born to ensure the stability of the busy sites with resilient design. Builtin goctl greatly improves the development productivity.

go-zero English | 简体中文 0. what is go-zero go-zero is a web and rpc framework that with lots of engineering practices builtin. It’s born to ensure the

好未来技术 21.7k Dec 2, 2022
Microservice framework following best cloud practices with a focus on productivity.

patron Patron is a framework for creating microservices, originally created by Sotiris Mantzaris (https://github.com/mantzas). This fork is maintained

Beat Labs 100 Nov 22, 2022
beego is an open-source, high-performance web framework for the Go programming language.

Beego Beego is used for rapid development of enterprise application in Go, including RESTful APIs, web apps and backend services. It is inspired by To

astaxie 578 Nov 29, 2022
beego is an open-source, high-performance web framework for the Go programming language.

Beego Beego is used for rapid development of enterprise application in Go, including RESTful APIs, web apps and backend services. It is inspired by To

beego Framework 29.2k Nov 28, 2022
letgo is an open-source, high-performance web framework for the Go programming language.

high-performance Lightweight web framework for the Go programming language. golang web framework,高可用golang web框架,go语言 web框架 ,go web

wjp 350 Sep 23, 2022
henrylee2cn 1.6k Nov 18, 2022
Flamingo Framework and Core Library. Flamingo is a go based framework for pluggable web projects. It is used to build scalable and maintainable (web)applications.

Flamingo Framework Flamingo is a web framework based on Go. It is designed to build pluggable and maintainable web projects. It is production ready, f

Flamingo 329 Dec 5, 2022
Golanger Web Framework is a lightweight framework for writing web applications in Go.

/* Copyright 2013 Golanger.com. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except

golanger 298 Nov 14, 2022
The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework.

jin About The jin is a simplified version of the gin web framework that can help you quickly understand the core principles of a web framework. If thi

null 8 Jul 14, 2022
High performance, minimalist Go web framework

Supported Go versions As of version 4.0.0, Echo is available as a Go module. Therefore a Go version capable of understanding /vN suffixed imports is r

LabStack LLC 24.3k Nov 30, 2022
Gearbox :gear: is a web framework written in Go with a focus on high performance

gearbox ⚙️ is a web framework for building micro services written in Go with a focus on high performance. It's built on fasthttp which is up to 10x fa

Gearbox 690 Dec 1, 2022
hiboot is a high performance web and cli application framework with dependency injection support

Hiboot - web/cli application framework About Hiboot is a cloud native web and cli application framework written in Go. Hiboot is not trying to reinven

hidevops.io 179 Nov 20, 2022
Package macaron is a high productive and modular web framework in Go.

Macaron Package macaron is a high productive and modular web framework in Go. Getting Started The minimum requirement of Go is 1.6. To install Macaron

Macaron 3.3k Nov 29, 2022
A high level web-framework for Go

go-start is a high level web-framework for Go, like Django for Python or Rails for Ruby. Installation: go get github.com/ungerik/go-start Documentatio

Erik Unger 268 Oct 25, 2022
Gearbox :gear: is a web framework written in Go with a focus on high performance

gearbox ⚙️ is a web framework for building micro services written in Go with a focus on high performance. It's built on fasthttp which is up to 10x fa

Gearbox 688 Nov 28, 2022
High performance, simple Go web framework

Elton Elton的实现参考了koa以及echo,中间件的调整均为洋葱模型:请求由外至内,响应由内至外。主要特性如下: 处理函数(中间件)均以返回error的形式响应出错,方便使用统一的出错处理中间件将出错统一转换为对应的输出(JSON),并根据出错的类型等生成各类统计分析 成功响应数据直接赋值

Tree Xie 61 Nov 27, 2022
Dragon 🐲 🐲 🐲 is an enterprise high performance web framework with Go for the feature and comfortable develop.

Dragon start dragon ab performance Dragon ?? ?? ?? is a lightweight high performance web framework with Go for the feature and comfortable develop. 中文

dragon 8 Sep 14, 2022
Dragon 🐲 🐲 🐲 is a lightweight high performance web framework with Go for the feature and comfortable develop.

Dragon project new link start dragon ab performance Dragon ?? ?? ?? is a lightweight high performance web framework with Go for the feature and comfor

azerothyang 0 Sep 6, 2022
⚡ Rux is an simple and fast web framework. support middleware, compatible http.Handler interface. 简单且快速的 Go web 框架,支持中间件,兼容 http.Handler 接口

Rux Simple and fast web framework for build golang HTTP applications. NOTICE: v1.3.x is not fully compatible with v1.2.x version Fast route match, sup

Gookit 83 Oct 3, 2022