Sha256: 6c309ede2169b16d36e4003c6f92c9b295e52baa98f266d3d00851b0d2af6e97

Contents?: true

Size: 1.3 KB

Versions: 2

Compression:

Stored size: 1.3 KB

Contents

module FixtureReplacement
  module ClassMethods
    def included(_other_mod)
      FixtureReplacement.load_example_data
    end

    def attributes_for(fixture_name, options={}, &block)
      builder = AttributeBuilder.new(fixture_name, options, &block)
      MethodGenerator.new(builder, self).generate_methods
    end

    def validate!
      AttributeBuilder.validate_instances!
    end

    def random_string(length=10)
      chars = ("a".."z").to_a
      string = ""
      1.upto(length) { |i| string << chars[rand(chars.size-1)]}
      string
    end

    def load_example_data
      load "#{rails_root}/db/example_data.rb"
    # rescue NameError
    #   load "./db/example_data.rb"
    rescue LoadError, NameError
      # no-op.  If the file is not found, don't panic
    end

    def rails_root
      ::Rails.root
    rescue NameError
      "."
    end

    def reload!
      AttributeBuilder.clear_out_instances!
      load File.expand_path(File.dirname(__FILE__) + "/../fixture_replacement.rb")
    end

  private

    # Any user defined instance methods need the module's class scope to be
    # accessible inside the block given to attributes_for
    #
    # Addresses bug #16858 (see CHANGELOG)
    def method_added(method)
      module_function method if method != :method_added
      public method
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
fixture_replacement-4.0.1 lib/fixture_replacement/class_methods.rb
fixture_replacement-4.0.0 lib/fixture_replacement/class_methods.rb