In case anyone is like me and wanted to see some more usage examples, the author of Glimmer seems to have a few games he's put together using the gem:
https://github.com/AndyObtiva/glimmer_klondike_solitaire
https://github.com/AndyObtiva/glimmer_wordle
https://github.com/AndyObtiva/glimmer_tetris
https://github.com/AndyObtiva/glimmer_snake
Note there is already UI component framework called Glimmer that is used by Ember.js: https://glimmerjs.com/. It's pretty much upstreamed into Ember itself these days, but the devs also have a big Rails background so I found the coincidence funny.
As a long time rubyist, I know that Andy's Glimmer preceded Yehuda's.
The first commit to the Ruby Glimmer project (2008-11-25 is the earliest I found) long predates the first commit to even Ember itself (2011-04-30).
And only 21,000+ commits. Nice!
Congrats Andy for consistently shipping! He has been working on this and perfecting it for years.
This is great! Just yesterday I was looking at wxruby3 but I didn’t see a way to package/distribute apps. This does solve that problem.
How debuggable is this (besides sifting through wall of debug log text)? Can you step through your declarative GUI building process inside DSL or its like this: "DSL text goes into magic magic...POOF! here is the result. hopefully nothing went wrong or glhf"
I've built a DSL engine on top of CUE + Go's text/template [1]. This largely becomes feeding data into a set of templates, and even this can be hard to debug because template engines often lack the extras needed to support it.
I'd be curious to see if a more code based DSL engine has better debug support. I would imagine you would be stepping through both the DSL code and the engine, if it is more dynamic (i.e. there is not a two step process for DSL authoring)
What I like about a text/template engine is that anyone can use it (create new DSLs) without knowing the language the engine is implemented in. CUE appeals to me as the language for writing/using the DSL because (1) I don't have to learn a new syntax per DSL and (2) it becomes data (json/yaml) I can use anywhere for other purposes beyond generating code.
my experience with interpreter pattern is that you will be spending 90% of debugger time stepping through abstract "eval" functions that are irrelevant to what you want debug.
The popular debugger for Ruby is a combination of two libraries: byebug and pry. Using these should allow you to step into/over code in a familiar way, if you've used most breakpoint-based debuggers.
If you end up giving it a try, please report back!
These two gems have been superseded by the `debug` gem.
Could you say more about that? I have been using pry, and it appears to still be updated. Is there a reason to stop using pry, or are you expressing a preference for the official debug gem?
Thanks!