= 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 (default location: {test/spec}/stale_fish.yml; overwrite by setting StaleFish::Utility.config_path) and issue the following commands. A sample YAML file: stale: configuration: use_fakeweb: true yahoo: file_path: RAILS_ROOT + '/spec/fixtures/yahoo.html' source_url: http://www.yahoo.com last_updated_at: update_frequency: 1.day google: file_path: RAILS_ROOT + '/spec/fixtures/github_commit.json' source_url: http://api.github.com/post_commit/ last_updated_at: update_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.update_stale("facebook", "yahoo") end .... end For all tests add the following to spec_helper.rb require 'stale_fish' Spec::Runner.configure do |config| ... config.before do 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.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.