とりあえずPATHを通す
kiri@smtp:~/projects/rails/sample_view[1859]% pkg info -aI|grep annotate rubygem-annotate-3.2.0 Write model schema information as a comment kiri@smtp:~/projects/rails/sample_view[1860]% pkg info -l rubygem-annotate-3.2.0 rubygem-annotate-3.2.0: /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/AUTHORS.md /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/CHANGELOG.md /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/LICENSE.txt /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/README.md /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/RELEASE.md /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/annotate.gemspec /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/bin/annotate /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/active_record_patch.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/annotate_models.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/annotate_models/file_patterns.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/annotate_routes.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/annotate_routes/header_generator.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/annotate_routes/helpers.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/constants.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/helpers.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/parser.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/tasks.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/annotate/version.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/generators/annotate/USAGE /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/generators/annotate/install_generator.rb /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/generators/annotate/templates/auto_annotate_models.rake /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/tasks/annotate_models.rake /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/tasks/annotate_models_migrate.rake /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/lib/tasks/annotate_routes.rake /usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/potato.md /usr/local/lib/ruby/gems/3.3/specifications/annotate-3.2.0.gemspec /usr/local/share/licenses/rubygem-annotate-3.2.0/LICENSE /usr/local/share/licenses/rubygem-annotate-3.2.0/MIT /usr/local/share/licenses/rubygem-annotate-3.2.0/catalog.mk kiri@smtp:~/projects/rails/sample_view[1861]% which annotate /usr/local/bin/annotate kiri@smtp:~/projects/rails/sample_view[1862]% setenv PATH "/usr/local/lib/ruby/gems/3.3/gems/annotate-3.2.0/bin:$PATH"
annotateのコマンドライン
kiri@smtp:~/projects/rails/sample_view[1863]% bundle exec annotate --help Usage: annotate [options] [model_file]* --additional-file-patterns path1,path2,path3 Additional file paths or globs to annotate, separated by commas (e.g. `/foo/bar/%model_name%/*.rb,/baz/%model_name%.rb`) -d, --delete Remove annotations from all model files or the routes.rb file -p [before|top|after|bottom], Place the annotations at the top (before) or the bottom (after) of the model/test/fixture/factory/route/serializer file(s) --position --pc, --position-in-class [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of the model file --pf, --position-in-factory [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of any factory files --px, --position-in-fixture [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of any fixture files --pt, --position-in-test [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of any test files --pr, --position-in-routes [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of the routes.rb file --ps, --position-in-serializer [before|top|after|bottom] Place the annotations at the top (before) or the bottom (after) of the serializer files --w, --wrapper STR Wrap annotation with the text passed as parameter. If --w option is used, the same text will be used as opening and closing --wo, --wrapper-open STR Annotation wrapper opening. --wc, --wrapper-close STR Annotation wrapper closing -r, --routes Annotate routes.rb with the output of 'rake routes' --models Annotate ActiveRecord models -a, --active-admin Annotate active_admin models -v, --version Show the current version of this gem -m, --show-migration Include the migration version number in the annotation -k, --show-foreign-keys List the table's foreign key constraints in the annotation --ck, --complete-foreign-keys Complete foreign key names in the annotation -i, --show-indexes List the table's database indexes in the annotation -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, separate multiple dirs with commas --root-dir dir Annotate files stored within root dir projects, separate multiple dirs with commas --ignore-model-subdirects Ignore subdirectories of the models directory --sort Sort columns alphabetically, rather than in creation order --classified-sort Sort columns alphabetically, but first goes id, then the rest columns, then the timestamp columns and then the association columns -R, --require path Additional file to require before loading models, may be used multiple times -e [tests,fixtures,factories,serializers], --exclude Do not annotate fixtures, test files, factories, and/or serializers -f [bare|rdoc|yard|markdown], Render Schema Infomation as plain/RDoc/Yard/Markdown --format --force Force new annotations even if there are no changes. --frozen Do not allow to change annotations. Exits non-zero if there are going to be changes to files. --timestamp Include timestamp in (routes) annotation --trace If unable to annotate a file, print the full stack trace, not just the exception message. -I, --ignore-columns REGEX don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'` --ignore-routes REGEX don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'` --hide-limit-column-types VALUES don't show limit for given column types, separated by commas (i.e., `integer,boolean,text`) --hide-default-column-types VALUES don't show default for given column types, separated by commas (i.e., `json,jsonb,hstore`) --ignore-unknown-models don't display warnings for bad model files --with-comment include database comments in model annotations kiri@smtp:~/projects/rails/sample_view[1864]%
ルーティングに関しては以下のバグがある(portでは修正済み)
--- lib/annotate/annotate_routes/header_generator.rb.org 2024-04-03 14:33:35.130623000 +0900 +++ lib/annotate/annotate_routes/header_generator.rb 2024-04-03 14:34:01.047391000 +0900 @@ -16,7 +16,7 @@ private def routes_map(options) - result = `rake routes`.chomp("\n").split(/\n/, -1) + result = `rails routes`.chomp("\n").split(/\n/, -1) # In old versions of Rake, the first line of output was the cwd. Not so # much in newer ones. We ditch that line if it exists, and if not, we
まずannotate:installする
kiri@smtp:~/projects/rails/sample_view[1866]% bundle exec rails generate annotate:install Running via Spring preloader in process 9626 create lib/tasks/auto_annotate_models.rake kiri@smtp:~/projects/rails/sample_view[1867]%
lib/tasks/auto_annotate_models.rakeに生成される
# NOTE: only doing this in development as some production environments (Heroku) # NOTE: are sensitive to local FS writes, and besides -- it's just not proper # NOTE: to have a dev-mode tool do its thing in production. if Rails.env.development? require 'annotate' task :set_annotation_options do # You can override any of these by setting an environment variable of the # same name. Annotate.set_defaults( 'active_admin' => 'false', 'additional_file_patterns' => [], 'routes' => 'false', 'models' => 'true', 'position_in_routes' => 'before', 'position_in_class' => 'before', 'position_in_test' => 'before', 'position_in_fixture' => 'before', 'position_in_factory' => 'before', 'position_in_serializer' => 'before', 'show_foreign_keys' => 'true', 'show_complete_foreign_keys' => 'false', 'show_indexes' => 'true', 'simple_indexes' => 'false', 'model_dir' => 'app/models', 'root_dir' => '', 'include_version' => 'false', 'require' => '', 'exclude_tests' => 'false', 'exclude_fixtures' => 'false', 'exclude_factories' => 'false', 'exclude_serializers' => 'false', 'exclude_scaffolds' => 'true', 'exclude_controllers' => 'true', 'exclude_helpers' => 'true', 'exclude_sti_subclasses' => 'false', 'ignore_model_sub_dir' => 'false', 'ignore_columns' => nil, 'ignore_routes' => nil, 'ignore_unknown_models' => 'false', 'hide_limit_column_types' => 'integer,bigint,boolean', 'hide_default_column_types' => 'json,jsonb,hstore', 'skip_on_db_migrate' => 'false', 'format_bare' => 'true', 'format_rdoc' => 'false', 'format_yard' => 'false', 'format_markdown' => 'false', 'sort' => 'false', 'force' => 'false', 'frozen' => 'false', 'classified_sort' => 'true', 'trace' => 'false', 'wrapper_open' => nil, 'wrapper_close' => nil, 'with_comment' => 'true' ) end Annotate.load_tasks end
"'routes'=> 'true'"にする
kiri@smtp:~/projects/rails/sample_view[1867]% diff -u lib/tasks/auto_annotate_models.rake.org lib/tasks/auto_annotate_models.rake --- lib/tasks/auto_annotate_models.rake.org 2024-04-02 11:10:37.000000000 +0900 +++ lib/tasks/auto_annotate_models.rake 2024-04-08 16:45:08.363430000 +0900 @@ -9,7 +9,7 @@ Annotate.set_defaults( 'active_admin' => 'false', 'additional_file_patterns' => [], - 'routes' => 'false', + 'routes' => 'true', 'models' => 'true', 'position_in_routes' => 'before', 'position_in_class' => 'before', kiri@smtp:~/projects/rails/sample_view[1868]%