The client
Never Seeing Your Code
One of the things I’m proudest of is that Prospector never needed your source code. Instead of adding something to a GitHub repository and asking for full access to it, I wanted it to work at runtime. You added a small open source gem to your project, and when your app was deployed, it looked at the application’s own bundle and reported back over an API: the name and version of every gem it had loaded, dependencies and all, and the version of Ruby it was running on. Prospector never got access to your actual code, and that helped with compliance too.
In a Rails app it took care of itself. When the app booted in a real web server, rather than in a console or a Rake task, the gem queued its report in the background with ActiveJob or Sidekiq, whichever the app already used. Anywhere else, one Rake task sent it, so a release script could run it on every deploy, and a RubyMotion app reported itself every time it was built for a device.
The gem went from 0.1 in June 2015 to 1.0 in March 2017, and it’s still on RubyGems, with 30k downloads to date.