When we were kids, I remember noticing how my brother LOVED bacon, but only specific parts. He’d carefully strip the bacon apart so that he was only eating the meatiest parts, leaving the fat behind. He didn’t complain, mind you. He only ate what he really liked, and would take the time to make sure the “fat” was ripped away, since he hated it.
On with the techno-jargon-ish post…
I’ve always been interested in building an app on a non-microsoft stack. In the mobile space, I’ve created a couple of ugly Android aps (not ugly because of Android itself, but of my, and my team’s design limitations). The next part was a web app. This leads me down the rails / django / php path. I’ve chosen rails for my first real product venture.
I was about to push my app to Heroku, exposing the app to a colleague of mine for the next leg of the system interactions. I kept getting the wonderful “no Cedar app detected” and “failed to push some refs.” WTF man? I thought this should all just work.. what a fool I was. MOSTLY because I really have little confidence with rails at this point, and have no room (yet. I’m working on that >;]) to be so presumptuous.
I then began doing what any accomplished programmer would do: blame the thing I think I know the least about: Heroku.
To the Google! To Freenode! Nothing!
What could I be missing? Am I really so genetically deficient that I just can’t get this shit to work? Turns out.. no. Here’s the deal.
This app a mash-up of a number of data sources that I don’t own, has a web component to it and a mobile component. SO unique right? Well, hang on. Here’s what my git repo looked/s like:
ProductName
|_.git
|_ android
|_web (rails 3.1.3)
|_workers
See the problem? Which one of those is a Cedar-supported app? A Cedar-supported app is a Rails 3.x app, according to Heroku’s docs. While having the android app, the rails app and the worker scripts all in the same repo appears to be totally fine in terms of a team that is working on a cross-platform app, it fails us in the deployment context. It fails us in the deployment context because Heroku appears to expect the connected repository to ONLY contain items that comprise a supported application type. Any other items present in that same repo and BANG! “failed to push some refs.” So Heroku wants fat-free bacon or no bacon at all!!
In response to this situation, I’m thinking that it’s reasonable to keep each portion of my app in its own repo. This will, I think, help me more effectively isolate versioning needs (the commit logs will be more meaningful since they only contain changes to THAT app, and I won’t need to weed through the git logs to find changes to each of the n apps contained therein).
I am somewhat curious about better ways to manage my app’s assets though. Having multiple repos for a single product seems a little overkill. Additionally, it seems at this point that the requirements of working with Heroku are pushing a little too far into my local workflow. Hmm. Onward with the learning! Comments / corrections / objections are welcome.
Let us not forget,
