ctran/annotate_models

View on GitHub
CHANGELOG.md

Summary

Maintainability
Test Coverage
Please see https://github.com/ctran/annotate_models/releases for changes between releases.

## 3.1.1
Changes
- Bump required ruby version to >= 2.4 [#772](https://github.com/ctran/annotate_models/pull/772)
- [Revert #677] Fix column default annotations [#768](https://github.com/ctran/annotate_models/pull/768)

Project Improvements
- Refactor by adding AnnotateRoutes::Helpers [#770](https://github.com/ctran/annotate_models/pull/770) 
- Bump puma from 4.3.1 to 4.3.3 in /spec/integration/rails_6.0.2.1 [#771](https://github.com/ctran/annotate_models/pull/771)
- Bump puma from 3.12.2 to 4.3.3 in /spec/integration/rails_5.2.4.1 [#769](https://github.com/ctran/annotate_models/pull/769)
- Bump nokogiri from 1.10.7 to 1.10.8 in /spec/integration/rails_5.2.4.1 [#766](https://github.com/ctran/annotate_models/pull/766)
- Bump nokogiri from 1.10.7 to 1.10.8 in /spec/integration/rails_6.0.2.1 [#765](https://github.com/ctran/annotate_models/pull/765)
- Refactor test cases of AnnotateRoutes [#760](https://github.com/ctran/annotate_models/pull/760)
- Rename FactoryGirl -> FactoryBot comment [#759](https://github.com/ctran/annotate_models/pull/759)

## 3.1.0
Changes
- Fix new lines after comments for rubocop compatibility [#757](https://github.com/ctran/annotate_models/pull/757)
- Fix messages from AnnotateRoutes [#737](https://github.com/ctran/annotate_models/pull/737)
- Support YARD notation [#724](https://github.com/ctran/annotate_models/pull/724)
- Refactor AnnotateRoutes.routes_file_exist? [#716](https://github.com/ctran/annotate_models/pull/716)
- Refactor namespace Annotate [#719](https://github.com/ctran/annotate_models/pull/719)
- Add columns managed by Globalize gem [#602](https://github.com/ctran/annotate_models/pull/602)

Bug Fixes
- Fix additional_file_patterns parsing [#756](https://github.com/ctran/annotate_models/pull/756)
- Fix typo in README [#752](https://github.com/ctran/annotate_models/pull/752)
- Fix bin/annotate NoMethodError [#745](https://github.com/ctran/annotate_models/pull/745)
- Fix README for YARD format [#740](https://github.com/ctran/annotate_models/pull/740)
- Fix constant names that were not renamed in #721 [#739](https://github.com/ctran/annotate_models/pull/739)
- Replace soft-deprecated constant `HashWithIndifferentAccess` to `ActiveSupport::HashWithIndifferentAccess` [#699](https://github.com/ctran/annotate_models/pull/699)
- [Fix #570](https://github.com/ctran/annotate_models/issues/570) Change of foreign key should be considered as a column change
- [Fix #430](https://github.com/ctran/annotate_models/issues/430) Handle columns from activerecord-postgis-adapter [#694](https://github.com/ctran/annotate_models/pull/694)
- Add ActiveAdmin option to template [#693](https://github.com/ctran/annotate_models/pull/693)
- Fix foreign key issue with Rails 6 and Sqlite3 [#695](https://github.com/ctran/annotate_models/pull/695)
- Fix Serializers Test Directory [#625](https://github.com/ctran/annotate_models/pull/625)
- [Fix #624](https://github.com/ctran/annotate_models/issues/624) Correct default values for columns when ActiveRecord::Enum is used [#677](https://github.com/ctran/annotate_models/pull/677)
- [Fix #675](https://github.com/ctran/annotate_models/issues/675) Correct indentation for double-byte characters [#676](https://github.com/ctran/annotate_models/pull/676)
- FIX: Ensure only one line is around the annotation [#669](https://github.com/ctran/annotate_models/pull/669)
- Fix shifted when format_markdown option enabled and used non-ascii [#650](https://github.com/ctran/annotate_models/pull/650)

Project improvements
- Refactor RSpec for AnnotateModels - structuralize test cases [#755](https://github.com/ctran/annotate_models/pull/755)
- Refactor test cases of AnnotateRoutes as for Rake versions [#754](https://github.com/ctran/annotate_models/pull/754)
- Add integration tests to project [#747](https://github.com/ctran/annotate_models/pull/747)
- Refactor test cases for AnnotateRoutes.remove_annotations [#748](https://github.com/ctran/annotate_models/pull/748)
- Refactor RSpec for AnnotateModels - with Globalize gem [#749](https://github.com/ctran/annotate_models/pull/749)
- Fixed CHANGELOG.md to add link to each PR [#751](https://github.com/ctran/annotate_models/pull/751)
- Delete integration test fixtures [#746](https://github.com/ctran/annotate_models/pull/746)
- Remove remaining integration test files [#744](https://github.com/ctran/annotate_models/pull/744)
- Remove unworking integration tests [#725](https://github.com/ctran/annotate_models/pull/725)
- Refactor Annotate::Parser [#742](https://github.com/ctran/annotate_models/pull/742)
- Refactor RSpec for AnnotateModels (4) - AnnotateModels.get_schema_info (without custom options) [#735](https://github.com/ctran/annotate_models/pull/735)
- Refactor RSpec for AnnotateRoutes (1) [#736](https://github.com/ctran/annotate_models/pull/736)
- Refactor AnnotateRoutes.rewrite_contents [#734](https://github.com/ctran/annotate_models/pull/734)
- AnnotateModels.get_schema_info (with custom options) [#732](https://github.com/ctran/annotate_models/pull/732)
- Fix typo in RSpec of AnnotateModels [#731](https://github.com/ctran/annotate_models/pull/731)
- Remove AnnotateRoutes.rewrite_contents_with_header [#730](https://github.com/ctran/annotate_models/pull/730)
- Refactor AnnotateRoutes.annotate_routes and .rewrite_contents_with_header [#729](https://github.com/ctran/annotate_models/pull/729)
- Refactor AnnotateModels::Parser [#728](https://github.com/ctran/annotate_models/pull/728)
- Remove invalid document of AnnotateRoutes.rewrite_contents [#727](https://github.com/ctran/annotate_models/pull/727)
- Refactor RSpec for AnnotateModels (1) [#726](https://github.com/ctran/annotate_models/pull/726)
- Refactor AnnotateModels::Helpers [#723](https://github.com/ctran/annotate_models/pull/723)
- Refactor AnnotateRoutes.remove_annotations [#715](https://github.com/ctran/annotate_models/pull/715)
- Fix AnnotateRoutes.extract_magic_comments_from_array [#712](https://github.com/ctran/annotate_models/pull/712)
- Rename FactoryGirl to FactoryBot [#721](https://github.com/ctran/annotate_models/pull/721)
- Refactor AnnotateRoutes.header [#714](https://github.com/ctran/annotate_models/pull/714)
- Freeze constant AnnotateRoutes::HEADER_ROW [#713](https://github.com/ctran/annotate_models/pull/713)
- Add constants MAGIC_COMMENT_MATCHER [#711](https://github.com/ctran/annotate_models/pull/711)
- Rename method and variable of AnnotateRoutes for readability [#709](https://github.com/ctran/annotate_models/pull/709)
- Refactor lib/annotate.rb [#707](https://github.com/ctran/annotate_models/pull/707)
- Delete TODO.md [#700](https://github.com/ctran/annotate_models/pull/700)
- Tidy README [#701](https://github.com/ctran/annotate_models/pull/701)
- Convert documentation files to Markdown [#697](https://github.com/ctran/annotate_models/pull/697)
- Upgrade and fix CI [#698](https://github.com/ctran/annotate_models/pull/698)
- Add upgrade instructions to README [#687](https://github.com/ctran/annotate_models/pull/687)
- Fix Github release action [#682](https://github.com/ctran/annotate_models/pull/682)

## 3.0.3
- Use a less error-prone way of specifying gem files [#662](https://github.com/ctran/annotate_models/pull/662)
- Update rake requirement from `>= 10.4, < 13.0` to `>= 10.4, < 14.0` [#659](https://github.com/ctran/annotate_models/pull/659)
- Bump nokogiri from 1.6.6.2 to 1.10.4 in /spec/integration/rails_4.2.0 [#655](https://github.com/ctran/annotate_models/pull/655)
- Default annotate models to true in config generated by `rails g annotate:install` [#671](https://github.com/ctran/annotate_models/pull/671)
- Bump loofah from 2.3.0 to 2.3.1 in /spec/integration/rails_4.2.0 [#681](https://github.com/ctran/annotate_models/pull/681)

## 3.0.2
- Fixes `LoadError` due to gemspec not referencing `parser.rb`, issue [#657](https://github.com/ctran/annotate_models/issues/657) [#660](https://github.com/ctran/annotate_models/pull/660)
- Changes `--additional_file_patterns` to use dashes `--additional-file-patterns` for consistency [#649](https://github.com/ctran/annotate_models/pull/649)
- Refactor: moving constants into `constants.rb` [#653](https://github.com/ctran/annotate_models/pull/653)

## 3.0.1
- Skipped as an official release, used the 3.0.1 patch for setting up Github Actions [#619](https://github.com/ctran/annotate_models/pull/619)

## 3.0.0
- **Breaking:** when option `models` is not set - models will not be annotated by default.

  Add `'models'=>'true'` to your config manually or use `--models` option if using CLI.

- Added `--models` CLI option fixing issue [#563](https://github.com/ctran/annotate_models/issues/563) [#647](https://github.com/ctran/annotate_models/pull/647)
- Added `--additional_file_patterns` option for additional file patterns [#633](https://github.com/ctran/annotate_models/pull/633) [#636](https://github.com/ctran/annotate_models/pull/636) [#637](https://github.com/ctran/annotate_models/pull/637)
- Refactored CLI parser [#646](https://github.com/ctran/annotate_models/pull/646)
- Fixed `BigDecimal.new` deprecation warning [#634](https://github.com/ctran/annotate_models/pull/634)
- Fixed annotations for columns with long data types [#622](https://github.com/ctran/annotate_models/pull/622)
- Made methods private in AnnotateRoutes [#598](https://github.com/ctran/annotate_models/pull/598)

See https://github.com/ctran/annotate_models/releases/tag/v3.0.0

## 2.7.5
See https://github.com/ctran/annotate_models/releases/tag/v2.7.5

## 2.7.3
See https://github.com/ctran/annotate_models/releases/tag/v2.7.3

## 2.7.2
See https://github.com/ctran/annotate_models/releases/tag/v2.7.2

## 2.7.1
See https://github.com/ctran/annotate_models/releases/tag/v2.7.1

## 2.7.0
See https://github.com/ctran/annotate_models/releases/tag/v2.7.0

## 2.6.9
- Support foreigh key [#241](https://github.com/ctran/annotate_models/pull/241)
- Check if model has skip tag in annotate_model_file [#167](https://github.com/ctran/annotate_models/pull/167)
- Fix issue where serializer-related flags weren't being honored [#246](https://github.com/ctran/annotate_models/issues/246)
- Prefer SQL column type over normalized AR type [#231](https://github.com/ctran/annotate_models/issues/231)

## 2.6.8
- Nothing annotated unless `options[:model_dir]` is specified, [#234](https://github.com/ctran/annotate_models/pull/234)

## 2.6.7
- Nothing annotated unless `options[:model_dir]` is specified, [#234](https://github.com/ctran/annotate_models/pull/234)

## 2.6.6
- Makes it possible to wrap annotations, [#225](https://github.com/ctran/annotate_models/pull/225)
- Fix single model generation, [#214](https://github.com/ctran/annotate_models/pull/214)
- Fix default value for Rails 4.2, [#212](https://github.com/ctran/annotate_models/issues/212)
- Don't crash on inherited models in subdirectories, [#232](https://github.com/ctran/annotate_models/issues/232)
- Process model_dir in rake task, [#197](https://github.com/ctran/annotate_models/pull/197)

## 2.6.4
- Skip "models/concerns", [#194](https://github.com/ctran/annotate_models/pull/194)
- Fix [#173](https://github.com/ctran/annotate_models/issues/173) where annotate says "Nothing to annotate" in rails 4.2
- Display an error message if not run from the root of the project, [#186](https://github.com/ctran/annotate_models/pull/186)
- Support rails 4.0 new default test directory, [#182](https://github.com/ctran/annotate_models/issues/182)
- Add an option to show timestamp in routes "-timestamp", [#136](https://github.com/ctran/annotate_models/issues/136)
- Skip plain ruby objects if they have the same class name as an ActiveRecord object, [#121](https://github.com/ctran/annotate_models/issues/121)

## 2.6.3
- Fix bug of annotate position in routes [#158](https://github.com/ctran/annotate_models/issues/158)

## 2.6.2
- Retain the current annotate block unless --force is specified
- Always load models, since they may not be autoloaded by Rails
- The pg array type is now detected (see [#158](https://github.com/ctran/annotate_models/pull/158))

## 2.6.0.beta2
- support for composite_primary_keys (garysweaver)
- bug fix for annotate_one_file (vlado)


## 2.6.0.beta1

- 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.


## 2.5.0

- 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 `\r\n` as line endings rather than pure `\n`s
- 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 (https://github.com/ctran/annotate_models/pull/85)
- Fix FactoryGirl compatibility bug (https://github.com/ctran/annotate_models/pull/82)


## 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 (http://github.com/bumi)
    - 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]`