Commit 5457d2bd by Nathan Brazil Committed by Robert Wahler

Add support for factory_girl and move default annotation position to top. Also…

Add support for factory_girl and move default annotation position to top. Also updated documentation files.
parent 9c68c8c9
== 2.4.1 2009-11-20
* Annotates thoughtbot's factory_girl factories (test/factories/<model>_factory.rb)
* Move default annotation position back to top
== 2.1 2009-10-18
* New options
......
......@@ -7,6 +7,7 @@ Add a comment summarizing the current schema to the top or bottom of each of you
* Tests and Specs
* Object Daddy exemplars
* Machinist blueprints
* Thoughtbot's factory_girl factories (test/factories/<model>_factory.rb files)
The schema comment looks like this:
......@@ -46,8 +47,8 @@ From github:
git clone git://github.com/ctran/annotate_models.git annotate
cd annotate
rake gem
sudo gem install pkg/annotate-*.gem
gem build annotate.gemspec
sudo gem install annotate-<version>.gem
== USAGE
......@@ -89,7 +90,8 @@ completed.
-s, --simple-indexes Concat the column's related indexes in the annotation
--model-dir dir Annotate model files stored in dir rather than app/models
-R, --require path Additional files to require before loading models
-e, --exclude [tests,fixtures] Do not annotate fixtures, test files, or both
-e [tests,fixtures,factories] Do not annotate fixtures, test files, and/or factories
--exclude
== WARNING
......@@ -103,7 +105,7 @@ to an automatically created comment block.
== LINKS
* Factory Girl => http://github.com/thoughtbot/factory_girl (NOT IMPLEMENTED)
* Factory Girl => http://github.com/thoughtbot/factory_girl
* Object Daddy => http://github.com/flogic/object_daddy
* SpatialAdapter => http://github.com/pdeffendol/spatial_adapter
* PostgisAdapter => http://github.com/nofxx/postgis_adapter
......@@ -134,5 +136,6 @@ Modifications by:
- Bob Potter - http://github.com/bpot
- Gavin Montague - http://github.com/govan/
- Alexander Semyonov - http://github.com/rotuka/
- Nathan Brazil - http://github.com/bitaxis/
and many others that I may have missed to add.
---
:major: 2
:minor: 4
:patch: 0
:patch: 1
# Generated by jeweler
# DO NOT EDIT THIS FILE
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
# DO NOT EDIT THIS FILE DIRECTLY
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
# -*- encoding: utf-8 -*-
Gem::Specification.new do |s|
s.name = %q{annotate}
s.version = "2.4.0"
s.version = "2.4.1"
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
s.authors = ["Cuong Tran", "Alex Chaffee", "Marcos Piccinini"]
s.date = %q{2009-10-23}
s.date = %q{2009-11-16}
s.default_executable = %q{annotate}
s.description = %q{Annotates Rails Models, routes, fixtures, and others based on the database schema.}
s.email = ["alex@stinky.com", "ctran@pragmaquest.com", "x@nofxx.com"]
......@@ -37,6 +37,7 @@ Gem::Specification.new do |s|
s.homepage = %q{http://github.com/ctran/annotate}
s.rdoc_options = ["--charset=UTF-8"]
s.require_paths = ["lib"]
s.rubyforge_project = %q{annotate}
s.rubygems_version = %q{1.3.5}
s.summary = %q{Annotates Rails Models, routes, fixtures, and others based on the database schema.}
s.test_files = [
......@@ -56,3 +57,4 @@ Gem::Specification.new do |s|
else
end
end
......@@ -57,7 +57,7 @@ OptionParser.new do |opts|
end
end
opts.on('-e', '--exclude [tests,fixtures]', Array, "Do not annotate fixtures, test files, or both") do |exclusions|
opts.on('-e', '--exclude [tests,fixtures,factories]', Array, "Do not annotate fixtures, test files, and/or factories") do |exclusions|
exclusions.each { |exclusion| ENV["exclude_#{exclusion}"] = "yes" }
end
......
......@@ -14,6 +14,8 @@ module AnnotateModels
EXEMPLARS_SPEC_DIR = File.join("spec", "exemplars")
# Machinist http://github.com/notahat/machinist
BLUEPRINTS_DIR = File.join("test", "blueprints")
# Factory Girl http://github.com/thoughtbot/factory_girl
FACTORIES_DIR = File.join("test", "factories")
def model_dir
@model_dir || "app/models"
......@@ -130,7 +132,7 @@ module AnnotateModels
old_content.sub!(/^# #{COMPAT_PREFIX}.*?\n(#.*\n)*\n/, '')
# Write it back
new_content = options[:position] == 'before' ? (info_block + old_content) : (old_content + "\n" + info_block)
new_content = ((options[:position] || :before).to_sym == :before) ? (info_block + old_content) : (old_content + "\n" + info_block)
File.open(file_name, "wb") { |f| f.puts new_content }
true
......@@ -191,6 +193,14 @@ module AnnotateModels
end
end
unless ENV['exclude_factories']
[
File.join(FACTORIES_DIR, "#{model_name}_factory.rb"), # test/factories
].each do |file|
annotate_one_file(file, info, options_with_position(options, :position_in_factory))
end
end
annotated
end
......@@ -309,6 +319,10 @@ module AnnotateModels
remove_annotation_of_file(file) if File.exist?(file)
end
[ File.join(FACTORIES_DIR, "#{klass.name.underscore}_factory.rb")].each do |file|
remove_annotation_of_file(file) if File.exist?(file)
end
end
rescue Exception => e
puts "Unable to annotate #{file}: #{e.message}"
......
......@@ -3,6 +3,7 @@ task :annotate_models => :environment do
require 'annotate/annotate_models'
options={}
options[:position_in_class] = ENV['position_in_class'] || ENV['position'] || :before
options[:position_in_factory] = ENV['position_in_factory'] || ENV['position'] || :before
options[:position_in_fixture] = ENV['position_in_fixture'] || ENV['position'] || :before
options[:show_indexes] = ENV['show_indexes']
options[:simple_indexes] = ENV['simple_indexes']
......
TODO
-----
change default position back to "top" for all
add "top" and "bottom" as synonyms for "before" and "after"
change 'exclude' to 'only' (double negatives are not unconfusing)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment