Sha256: 48e6d367e136f03e0bd49f300b6154f61a889914422710c0a49cb392ec6afec1

Contents?: true

Size: 1.99 KB

Versions: 1

Compression:

Stored size: 1.99 KB

Contents

#Rails 3: require 'active_support/core_ext/numeric/time'
require 'active_support'
require 'fakeweb'
require 'yaml'

require File.join(File.dirname(__FILE__), 'stale_fish', 'fixture')

module StaleFish
  # no one likes stale fish.
  class << self

    def configuration=(config)
      @configuration = config
    end

    def configuration
      @configuration || if defined?(Rails)
                          File.join(Rails.root, 'spec', 'stale_fish.yml')
                        else
                          'stale_fish.yml'
                        end
    end

    def update_stale(options={})
      allow_requests
      fixtures(options).each do |fixture|
        if fixture.is_stale?
          fixture.update!
        end
      end
      block_requests
      write
    end

    def update_stale!(options={})
      allow_requests
      fixtures(options).each do |fixture|
        fixture.update!
      end
      block_requests
      write
    end

    def fixtures(params=nil)
      @fixtures ||= []
      if params.is_a?(Hash)
        if params[:only]
          @fixtures.select { |f| params[:only].include?(f.name.to_sym) }
        elsif params[:except]
          @fixtures.select { |f| !params[:except].include?(f.name.to_sym) }
        end
      else
        @fixtures
      end
    end

    protected

      def load
        @fixtures = []
        definitions = YAML::load(File.open(configuration))['stale'].symbolize_keys!
        definitions.each do |key, definition|
          self.fixtures << StaleFish::Fixture.new(definition.merge({:name => key.to_s}))
        end
        return fixtures
      end

      def write
        updated_yaml = []
        fixtures.each do |fixture|
          updated_yaml << fixture.to_yaml
        end
        updated_yaml = { :stale => updated_yaml }
        File.open(configuration, 'w') { |file| updated_yaml.to_yaml }
      end

      def allow_requests
        FakeWeb.allow_net_connect = true
      end

      def block_requests
        FakeWeb.allow_net_connect = false
      end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
stale_fish-1.3.0.pre lib/stale_fish.rb