A few months ago I started writing a build system in Ruby. Actually, I began it in Perl; but it didn’t take long for me to switch. Perl is a monster. Forgive me for saying so, but it is. I thought I’d play a bit at learning it’s demonic syntax and insane object system, but I failed. Ruby’s much nicer.
In any case, one of the larger issues with the build system was defining the package declaration format. At first I used hashes, then classes, and now (in v2) I’ve settled on a custom dsl.

I also have a GUI for viewing documentation and invoking commands.

Obviously it is half-baked. If you’ll notice, the title on the main window is “qttest.rb”, which is not final. The GUI is written with Qt, using the RubyQt4 bindings. I chose Qt because I have some experience with it; though that doesn’t stop me from getting hung up debugging segfaults. Honestly… all you have to do is pass in the wrong kind of object, or inherit from the wrong class and BAM! code explodes, interpreter crashes, program exits, done.
Despite the dangers of invoking third party C++ GUIs, Qt is the most mature cross platform GUI library outside the JVM, I’ve ever used. That doesn’t mean it is the last word, cause I haven’t tried all the GUI framworks, but there’s no doubt Qt is top tier. It even has a nice graphical editor.
The only gripe I have is that its wrappers (PyQt & RubyQt) have trouble producing idiomatic code; thus code ends up being more verbose than it should otherwise be. This problem could probably be solved with a higher level of abstraction. HotCocoa comes to mind. But it’s not that big of a gripe. All things considered, it’s awesome that there are these bindings in the first place. I should count my blessing that I’ve never had to dive in to the Ruby FFI. (or does it even have one?!)
Back to my Autoinstaller; it’s not yet ready for release to the public (in fact, it’s not entirely ready to be used pervasively in my own company) but I like the potential of the DSL for specifying packages, and (if I have the time) it’d be awesome to get it to run on OSX and Windows. Right now it is heavily dependent on the Debian package management system to install most of its dependencies — what it handles for itself are things not in a Debian repository, or source code repositories that need to be pulled directly and then built. But I could certainly substitute in macports or fink or gentoo or portage…
2 Comments
just wanted to say that this website is realy special and I’m Glad that i found it
I’ve gotten exposed to quite a lot of stuff here and just wanted to give my 4 cents. I’m about to write a good article for this forum about
רואה חשבון , רואה חשבון
גן אירועים , גן אירועים
גני אירועים , גני אירועים
הסרת משקפיים , הסרת משקפיים
and I’ll publish it as soon as i finish it.
ifdvklmvsklmdslmdv
Thanks
luxhuwfsynrvduziozcoz. acne treatment
ntyktv
Post a Comment