Giter Club home page Giter Club logo

Comments (7)

ndgnuh avatar ndgnuh commented on August 20, 2024 1

I managed to use Revise with this script:

using Pkg
Pkg.activate(@__DIR__)
using Revise: entr, revise
using MyApp


const t = MyApp.main() # call serve(app), nothing special


entr(String[], [MyApp]; all = true) do
	revise(MyApp)
end

from mux.jl.

cmcaine avatar cmcaine commented on August 20, 2024 1

Ah, yes, that's a nice simple approach! Very nice 😃 Would you be happy to make a PR adding something like this to the readme?

from mux.jl.

clarkevans avatar clarkevans commented on August 20, 2024

I've gotten my baby TodoMVC.jl to work with this glue. It's not great, I still think Mux.jl may be the most appropriate place for targeting this sort of developer oriented workflow. The bulk of the work happens in live_server.jl which probably needs a different name, but if it could be integrated here, that might be useful.

from mux.jl.

cmcaine avatar cmcaine commented on August 20, 2024

I think that having Mux work with Revise is worthwhile, but I'm not totally sold on this approach. I don't really like that we're closing and re-opening the socket, either, though maybe that's fine.

Re-evaluating the @app expression should be sufficient for Mux.serve to use the latest version of the code. Perhaps we can do something with that?

Looking at the revise docs, it seems like Revise.includet doesn't evaluate data definitions again if they change in the file, it just evaluates them on the first go around, then updates only methods. Which would explain why the top-level statements generated by the macro aren't being re-evaluated when they change. There might be something we can do there with Revise.track directly (though my initial attempts at that aren't succeeding).

from mux.jl.

clarkevans avatar clarkevans commented on August 20, 2024

I think that having Mux work with Revise is worthwhile, but I'm not totally sold on this approach.

Awesome. We're on the same page. I don't like the opening/closing of the socket either. Frankly, there's parts of the code I don't grok.

Which would explain why the top-level statements generated by the macro aren't being re-evaluated when they change.

With the existing TodoMVC, it did re-evaluate the @app macro, I think it only worked due to the clever if/else logic there. I've not tried an example using with Revise.includet.

from mux.jl.

schlichtanders avatar schlichtanders commented on August 20, 2024

Stumbling upon this because also for me it seems that revise is not working with Mux.jl which is very unfortunate...

Are there any updates on makeing Revise work with Mux.jl?

from mux.jl.

schlichtanders avatar schlichtanders commented on August 20, 2024

I just found a simple way: not to use @app.

I guess the advantage that Revise works out of the box like this is really huge.

module MyModule
using Mux: serve, mux, App
myserve(req) = req |> mux(
    ...
)

function main()
    serve(App(myserve), 1234)
end
end # module

Looks only very slightly alien ;-) but as Revise works and we have one macro less, I am actually quite happy with it.

from mux.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.