Giter Site home page Giter Site logo

Unclear fixture usage about afterglow HOT 4 OPEN

BlackYps avatar BlackYps commented on July 29, 2024
Unclear fixture usage

from afterglow.

Comments (4)

brunchboy avatar brunchboy commented on July 29, 2024

For help with learning and figuring things out, I’d suggest asking on the Afterglow Gitter chat rather than emailing me directly, because that way there is a chance that someone other than me might be able to help faster, and there is a searchable public historical record, like there is here on GitHub, that can help others in the future. If the traffic on that channel picks up I will move it to Zulip like I have my other open source projects. But I have not done that yet with Afterglow.

from afterglow.

brunchboy avatar brunchboy commented on July 29, 2024

But I still plan to take a look at and answer your question here, I just need to remind myself of what the code I wrote to support initialization files does. I would also suggest that if you are going to be doing serious amounts of development like this (creating new fixture definitions and your own show setup) you would be much happier in a REPL-oriented workflow, using Leiningen to start Clojure and manage your class paths, and an editor with good Clojure integration like Emacs + CIDER or IntelliJ IDEA + Cursive, rather than launching Afterglow from the command line using java -jar. I’d suggest setting up your own Clojure project that pulls in Afterglow as a library, then you can create and use whatever namespaces you want.

from afterglow.

brunchboy avatar brunchboy commented on July 29, 2024

So I think I may understand the problem here. Assuming you defined the cameo fiixture in the afterglow.fixtures.cameo namespace (so that it begins with (ns afterglow.fixtures.cameo …) then it might be enough to simply reverse the order of your initialization files. Right now it is trying to load my-show first, and loading it involves compiling it, which involves finding the afterglow.fixtures.cameo namespace. Since you have not put that file on the class path, it can’t be found, and compilation fails. Swapping the files’ order in your command line will load the fixture definition first, so it will be available when my-show loads, which should work.

But that will get quickly tedious, if you start having a lot of fixture definitions to load. It would be better to just put all the fixture definitions (and any other auxiliary helper namespaces you want to create) on the class path, so the compiler can find them when it needs them, rather than forcing you to list them all as init-files. It looks like you might have organized your src/ folder correctly for it to be used as a class path element, so you might find that java -cp afterglow.jar:src afterglow.core src/musiclight/my_show.clj works. (Sadly you can’t combine the -jar shortcut with -cp to add other things to your classpath… trying to manually wrangle classpaths for Clojure projects gets tedious quickly, so setting up your own project in Leiningen and/or a Clojure aware IDE as I suggested above will probably be a lot more pleasant.)

from afterglow.

BlackYps avatar BlackYps commented on July 29, 2024

Swapping the file order indeed solved the problem. I set up Clojure with IntelliJ IDEA and used Leiningen, but I didn't really figure out how to use the Clojure REPL to start my project from there. It's not too bad though, because I run my finished project on a Raspberry Pi and I use the afterglow.jar there anyway, so I might as well use that exact approach when developing.

I think the easiest thing for now is just to point out in the readme that the order of the file arguments matters.

from afterglow.

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.