Switch branches/tags
Nothing to show
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
166 lines (146 sloc) 7.64 KB


  • It's now possible to use Annotate in standalone ActiveRecord (non-Rails) projects again.

  • Adding note that Markdown is actually MultiMarkdown, and recommending the use of the `kramdown` engine for parsing it.

  • Improved Markdown formatting considerably.

  • Bugfix: Needed to use inline-code tag for column and table names, otherwise underscores would cause havok with the formatting.

  • Bugfix: Markdown syntax was incorrect (can't have trailing spaces before the closing marker for an emphasis tag).

  • Bugfix: Remove-annotations wasn't properly finding test/spec files, and wasn't even looking for FactoryGirl factories under the new naming convention.

  • Bugfix: Load the Rakefile from the current directory, not the first Rakefile in our load path.

  • Added support for new FactoryGirl naming convention.

  • Fix behavior of route annotations in newer versions of Rake that don't spit out the CWD as their first line of output.

  • Overhauled integration testing system to be much easier to work with, better compartmentalized, and so forth – at the cost that you must be using RVM to utilize it. (It'll spit out appropriate pending messages if you don't.) Also includes a mode for “tinkering” by hand with a scenario, and won't let you run it through rspect if the repo is in a dirty state. Added appropriate rake tasks to help with all of this.

  • Routes can now be appended, pre-pended, or removed – and do sane things in all cases.

  • Expose all `position_*` variables as CLI params.

  • Make `ENV ['position']` work as a default for all the `ENV ['position_*']` variables.

  • Make rake tasks more resilient to unusual circumstances / code loading behavior.

  • Resolve annotate vs. annotate_models ambiguity once and for all by settling on `annotate_models` and `annotate_routes`. This avoids a name collision with RMagick while not needlessly overloading the term.

  • Fixed that schema kept prepending additional newlines

  • Updates to make annotate smarter about when to touch a model

  • Recognize column+type, and don't change a file unless the column+type combination of the new schema are different than that of the old (i.e., don't regenerate if columns happen to be in a different order. That's just how life is sometimes)

  • Change annotate to use options hash instead of ENV.


  • Works better with Rails 3

  • Bugfix: schema kept prepending additional newlines

  • Updates to make annotate smarter about when to touch a model

  • Recognize column+type, and don't change a file unless the column+type combination of the new schema are different than that of the old (i.e., don't regenerate if columns happen to be in a different order. That's just how life is sometimes.)

  • Grab old specification even if it has rn as line endings rather than pure ns

  • Various warning and specification fixes

  • Fix “no such file to load – annotate/annotate_models (MissingSourceFile)” error (require statements in tasks now use full path to lib files)

  • warn about macros, to mitigate when we're included during a production run, not just a rakefile run – possibly at the expense of too much noise

  • Adding rake as a runtime dependency

  • If the schema is already in the model file, it will be replaced into the same location. If it didn't previously exist, it'll be placed according to the “position”, as before.

  • Allow task loading from Rakefile for gems (plugin installation already auto-detects).

  • Add skip_on_db_migrate option as well for people that don't want it

  • Fix options parsing to convert strings to proper booleans

  • Add support for Fabrication fabricators

  • Leave magic encoding comment intact

  • Fix issue #14 - RuntimeError: Already memoized

  • Count a model as 'annotated' if any of its tests/fixtures are annotated

  • Support FactoryGirl

  • Support :change migrations (Rails 3.1)

  • Allow models with non-standard capitalization

  • Widen type column so we can handle longtexts with chopping things off.

  • Skip trying to get list of models from commandline when running via Rake (was preventing the use of multiple rake tasks in one command if one of them was db:migrate).

  • Add ability to skip annotations for a model by adding '# -*- SkipSchemaAnnotations' anywhere in the file.

  • Don't show column limits for integer and boolean types.

  • Add sorting for columns and indexes. (Helpful for out-of-order migration execution. Use –sort if you want this.)

  • Annotate unit tests in subfolders.

  • Add generator to install rakefile that automatically annotates on db:migrate.

  • Correct Gemfile to clarify which environments need which gems.

  • Add an .rvmrc to facilitate clean development.

  • Refactor out ActiveRecord monkey-patch to permit extending without side-effects.

  • Use ObjectSpace to locate models to facilitate handling of models with non-standard capitalization. Note that this still requires that the inflector be configured to understand the special case.

  • Shore up test cases a bit.

  • Merge against many of the older branches on Github whose functionality is already reflected to reduce confusion about what is and is not implemented here.

  • Accept String or Symbol for :position (et al) options.

  • Add RDoc output formatting as an option.

  • Add Markdown output formatting as an option.

  • Add option to force annotation regeneration.

  • Add new configuration option for controlling where info is placed in fixtures/factories.

  • Fix for models without tables.

  • Fix gemspec generation now that Jeweler looks at Gemfile.

  • Fix warning: `NOTE: Gem::Specification#default_executable= is deprecated with no replacement. It will be removed on or after 2011-10-01.`

  • Fix handling of files with no trailing newline when putting annotations at the end of the file.

  • Now works on tables with no primary key.

  • –format=markdown option

  • –trace option to help debug “Unable to annotate” errors

  • “Table name” annotation (if table name is different from model name)

  • “Human name” annotation (enabling translation to non-English locales)

  • Fix JRuby ObjectSpace compatibility bug (

  • Fix FactoryGirl compatibility bug (

2.4.2 2009-11-21

  • Annotates (spec|test)/factories/<model>_factory.rb files

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.4.0 2009-12-13

  • Incorporated lots of patches from the Github community, including support for Blueprints fixtures

  • Several bug fixes

2.1 2009-10-18

  • New options

    • -R to require additional files before loading the models

    • -i to show database indexes in annotations

    • -e to exclude annotating tests or fixtures

    • -m to include the migration version number in the annotation

    • –model-dir to annotate model files stored a different place than app/models

  • Ignore unknown macros ('acts_as_whatever')

2.0 2009-02-03

  • Add annotate_models plugin fork additions

    • Annotates Rspec and Test Unit models

    • Annotates Object Daddy exemplars

    • Annotates geometrical columns

  • Add AnnotateRoutes rake task

  • Up gem structure to newgem defaults

1.0.4 2008-09-04

  • Only update modified models since last run, thanks to sant0sk1

1.0.3 2008-05-02

  • Add misc changes from Dustin Sallings and Henrik N

    • Remove trailing whitespace

    • More intuitive info messages

    • Update README file with update-to-date example

1.0.2 2008-03-22

  • Add contributions from Michael Bumann (

    • added an option “position” to choose to put the annotation,

    • spec/fixtures now also get annotated

    • added a task to remove the annotations

    • these options can be specified from command line as -d and -p [before|after]