= Stale Fish This gem provides a method for keeping your fixtures in sync with their sources. This will prevent the scenario where your build is broken in production, but CI has a green build to do outdated fixture data. StaleFish also allows for FakeWeb integration and URI management. == Features * Fixture update frequency uses the ActiveSupport relative time DSL * Versioned configuration file & fixtures means fixtures are only updated once per project. * Manage FakeWeb stubbed URI's through StaleFish * Automatic detection for Rails & Rack apps (default configuration locations) * Test Framework agnostic (tested with Test::Unit & RSpec) * Update all fixtures, specified fixtures, or forced update are all supported through the StaleFish.update_stale(*args) method * Fixtures are ONLY updated when a valid HTTP request is made, if server returns anything other than 200, an error is thrown failing the tests. == How To Simply drop in a YAML file in your application (for rails, RAILS_ROOT/config/stale_fish.yml is preferred) and issue the following commands. A sample YAML file: stale: configuration: use_fakeweb: true yahoo: filepath: ./tmp/yahoo.html source: http://www.yahoo.com updated: frequency: 1.day google: filepath: git_commit.json source: http://api.github.com/post_commit/ updated: frequency: 2.weeks Specify one block for every fixture you would like to update. The frequency field takes any relative date included in the ActiveSupport library. === RSpec For a single test add it to a before block describe UsersController do before do StaleFish.load_config = "#{RAILS_ROOT}/config/stale_fish.yml" StaleFish.update_stale("facebook", "yahoo") end .... end For all tests add the following to spec_helper.rb Spec::Runner.configure do |config| ... before do StaleFish.load_config = "#{RAILS_ROOT}/config/stale_fish.yml" StaleFish.update_stale end .... end === Test::Unit For all tests add the following to test_helper.rb class Test::Unit::TestCase ... self.use_transactional_fixtures = true self.use_instantiated_fixtures = false ... setup do StaleFish.load_config = "#{RAILS_ROOT}/config/stale_fish.yml" StaleFish.update_stale end ... end == More Info View the wiki: http://wiki.github.com/jsmestad/stale_fish == Thanks Paul Sadauskas for his work on Resourceful (used by StaleFish to provide accurate http handling when updating fixtures) == Copyright Copyright (c) 2009 Justin Smestad. See LICENSE for details.