carbonfive/raygun — pull request #112 by christiannelson (2013-08-08 20:04:28+00:00)
Title: Separate raygun executable from application prototype

Changes are rarely made to the executable, but often made to the application prototype. I'm thinking about separating the two.

Imagine having separate repositories for the gem and for the application prototype. When you run raygun, the high-level flow would look like:

1. Fetch application prototype for a git url (default to the official c5 app prototype). A command line option would allow users to specific a different repo, or branch with a repo, to be used. The default would provide the official raygun experience though.
1. Check that the version of raygun gem is new enough for the repo, to prevent user's with versions of raygun that are very old from having a bad experience. Recommend an upgrade and bail if it's too old.
1. Perform the search and replace operations to customize the new application as expected.

The new repo for the application prototype would look just like an actual rails app (called Application Prototype). It could be placed on CI, Code Climate, etc.

The obvious downsides are:
* Raygun wouldn't work without network connectivity.
* Decoupling would require a little extra care (or some refactors) to eliminate any brittleness between the gem and prototype. In one repo, a search and replace finds instances in both the gem and prototype. Splitting them makes that harder.