braumeister.org is a Rails application that gathers package information from Homebrew, the MacOS X package manager.
To get information about the packages currently available via Homebrew, the application has its own clone of Homebrew's Git repository. Homebrew's raw package files, the so called formulae (or formulas) which are Ruby classes, are used to gather information from the packages.
Because Homebrew isn't currently optimized for third party access, there is
some need to sandbox Homebrew's code, so we don't mess up with our
application's code. This is done by forking another Ruby process and using an
IO#pipe
for inter-process communication (IPC). The formula data is passed as
marshalled Hash
es from the indexing process (child) to the main process
(parent).
There are other, probably better methods of IPC like shared memory, but piping was easy to implement and proved to be fast enough even for full indexing with several hundred formulae.
If you clone the repository from GitHub it's pretty easy to get started with a working local copy. You'll need to create a local MongoDB database first:
mongo
> use braumeister
> db.addUser("braumeister", "braumeister")
After that you can run the following commands to run the application locally:
bundle install
rake db:seed
foreman start
braumeister.org is an open-source project. Therefore you are free to help improving it. There are several ways of contributing to braumeister.org's development:
- Use it and spread the word to existing and new Homebrew users
- Report problems and request features using the issue tracker.
- Write patches yourself to fix bugs and implement new functionality.
- Create a fork on GitHub and start hacking. Extra points for using feature branches and GitHub's pull requests.
"Braumeister" – [ˈbʁaʊmʌɪstəʀ] – is the German word for "master brewer" or "brewmaster", the person in charge of beer production.
This code is free software; you can redistribute it and/or modify it under the terms of the new BSD License. A copy of this license can be found in the LICENSE file.
- Sebastian Staudt – koraktor(at)gmail.com
- Andrey Ognevsky – a.ognevsky(at)gmail.com
- Michiel Staessen – staessenmichiel(at)gmail.com
- GitHub project page
- GitHub issue tracker
- Homebrew
- Continuous Integration at Travis CI
- Dependency status at Gemnasium
Follow braumeister.org on Twitter @braumeister_org.