Ripple-tastic!

a brief overview of Ripple

Thursday 01 December 2011 at 6:37 pm. Used tags: , , , , , ,

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.

Sweet!

Usage

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 + 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 repostiory.

One comment

Leave a comment

Jeremy D. Miller

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.

Jeremy D. Miller - 02-12-’11 16:21
(optional field)
(optional field)
'cause I hate spambots, you gotta do this I'm afraid :\
Remember personal info?
Small print: All html tags except <b> and <i> will be removed from your comment. You can make links by just typing the url or mail-address.

Reading list

  • Josh Arnold - Web developer, author & contributor of FubuMVC
  • Jeremy D Miller - Web developer, author & contributor of StructureMap & FubuMVC
  • Roy Osherove - Unit Testing, Agile Development, Leadership & .NET
  • Rob Ashton - Technical Lead & author of MvcEx and AutoPoco
Jon:

Wow! Can I work for you?! ** Breath of fresh air in management! **

Ian:

There will have to be very strict guidelines, the last thing you want is dispute over “.. but you gave him 5 credits and her only 3?!” which will undoubtedly lead to the scheme being rescinded. That re…

Gary Ewan Park:

This is a very interesting idea! It does leave some questions about how it is “policed”, and who decides whether a particular blog post, or SO answer warrants the credits, but I really do think that i…

Chris Marisic:

Being both a developer and a leader of developers, I have found little to be as integral to the speed and success of software development as intellisense. This is also why I leverage R# on top of Vis…

Franc:

I have to admit that Spark won me over very quickly, yes it is not perfect and yes I am not an expert in the subject but it has provided me with new skills. I have been a victim of its lack of intellis…

Randolph Burt:

Intellisense helps me code faster and make less mistakes. However, from a personal point of view, it can be the difference between enjoying development and not enjoying development – and if you don’t …