.. a brief overview of Ripple

Many people have been asking to know more about Ripple, a tool from the Fubu-family that allows you to manage your NuGet dependencies both locally and hosted. Still quite a new tool (knocked up by Jeremy & Josh over a hot beverage I believe) it’s early days but am already finding it invaluable in our solution management.

What is it?

Under the simplest screnario you can use Ripple together with a rake (or other) build script to download configured dependencies before compiling your solution, futhermore you can ask Ripple to update all dependencies through your solution directory-tree to the latest version.

Nice, but no cigar!

Where I’m really loving Ripple is in managing local builds of dependencies across consuming solutions. By using the ‘ripple local’ feature I am able to build a local repository, package it up into NuGet packages, then update solutions consuming those dependencies with the newly built NuGet packages.



So let’s take an example scenario using the GitHub FubuMVC.RippleDemo repostiory.

  1. FubuMVC solution (forked branch) that compiles successfully
  2. Own solution directory ‘FubuMVC.RippleDemo’ that builds successfully and has;

    • buildsupport submodule
    • ripple.cmd
    • ripple.config (detailing it’s own unique name and all NuGet dependencies including FubuMVC)
    • rakefile.rb (custom rake file for building RippleDemo – Ruby 1.8.7 %2B dependencies required)
  3. A directory structure that ensures both solutions have the same parent directory, for example;

    • c:\mycode\fubumvc
    • c:\mycode\FubuMVC.RippleDemo
  4. From the fubumvc directory where my forked branch is I am running the following command-line (notice how the from/to names match those in the ripple.config files in the respective repositories);

    • .ripple.cmd local -from fubumvc -to rippledemo -fast -direct
  5. Ripple will now attempt to;

    • Compile the ‘from’ solution (e.g. fubumvc)
    • Move the compiled nugets (for dependencies detailed in the ‘to’ repository ripple.config) to the ‘to’ repository ‘packages’ directory
    • Update project references to the updated dependencies
    • Build the ‘to’ solution (e.g. FubuMVC.RippleDemo)
  6. Hey Presto!

Getting Started

The currently recommended installation is via GitHub buildsupport submodule; to illustrate an example setup check out my GitHub FubuMVC.RippleDemo repository.

Historic Comments

Jeremy D Miller 02-12-2011 16:21
Nitpick so it doesn’t bite someone later,

“Update project references to the updated dependencies”

Ripple just does a crude copy of the assembly files. No project references are changed. My assumption was that “ripple local” would only be used for short lived development scenarios, so the magic “swap out the assembly files” thing wouldn’t do any lasting harm in terms of traceability.