annotate 2.6.3 → 3.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,303 @@
1
+ require 'optparse'
2
+
3
+ module Annotate
4
+ # Class for handling command line arguments
5
+ class Parser # rubocop:disable Metrics/ClassLength
6
+ def self.parse(args, env = {})
7
+ new(args, env).parse
8
+ end
9
+
10
+ attr_reader :args, :options, :env
11
+
12
+ DEFAULT_OPTIONS = {
13
+ target_action: :do_annotations,
14
+ exit: false
15
+ }.freeze
16
+
17
+ ANNOTATION_POSITIONS = %w[before top after bottom].freeze
18
+ FILE_TYPE_POSITIONS = %w[position_in_class position_in_factory position_in_fixture position_in_test position_in_routes position_in_serializer].freeze
19
+ EXCLUSION_LIST = %w[tests fixtures factories serializers].freeze
20
+ FORMAT_TYPES = %w[bare rdoc yard markdown].freeze
21
+
22
+ def initialize(args, env)
23
+ @args = args
24
+ @options = DEFAULT_OPTIONS.dup
25
+ @env = env
26
+ end
27
+
28
+ def parse
29
+ # To split up because right now this method parses and commits
30
+ parser.parse!(args)
31
+
32
+ commit
33
+
34
+ options
35
+ end
36
+
37
+ private
38
+
39
+ def parser
40
+ OptionParser.new do |option_parser|
41
+ add_options_to_parser(option_parser)
42
+ end
43
+ end
44
+
45
+ def commit
46
+ env.each_pair do |key, value|
47
+ ENV[key] = value
48
+ end
49
+ end
50
+
51
+ def add_options_to_parser(option_parser) # rubocop:disable Metrics/MethodLength
52
+ has_set_position = {}
53
+
54
+ option_parser.banner = 'Usage: annotate [options] [model_file]*'
55
+
56
+ option_parser.on('--additional-file-patterns path1,path2,path3',
57
+ Array,
58
+ "Additional file paths or globs to annotate, separated by commas (e.g. `/foo/bar/%model_name%/*.rb,/baz/%model_name%.rb`)") do |additional_file_patterns|
59
+ ENV['additional_file_patterns'] = additional_file_patterns
60
+ end
61
+
62
+ option_parser.on('-d',
63
+ '--delete',
64
+ 'Remove annotations from all model files or the routes.rb file') do
65
+ @options[:target_action] = :remove_annotations
66
+ end
67
+
68
+ option_parser.on('-p',
69
+ '--position [before|top|after|bottom]',
70
+ ANNOTATION_POSITIONS,
71
+ 'Place the annotations at the top (before) or the bottom (after) of the model/test/fixture/factory/route/serializer file(s)') do |position|
72
+ env['position'] = position
73
+
74
+ FILE_TYPE_POSITIONS.each do |key|
75
+ env[key] = position unless has_set_position[key]
76
+ end
77
+ end
78
+
79
+ option_parser.on('--pc',
80
+ '--position-in-class [before|top|after|bottom]',
81
+ ANNOTATION_POSITIONS,
82
+ 'Place the annotations at the top (before) or the bottom (after) of the model file') do |position_in_class|
83
+ env['position_in_class'] = position_in_class
84
+ has_set_position['position_in_class'] = true
85
+ end
86
+
87
+ option_parser.on('--pf',
88
+ '--position-in-factory [before|top|after|bottom]',
89
+ ANNOTATION_POSITIONS,
90
+ 'Place the annotations at the top (before) or the bottom (after) of any factory files') do |position_in_factory|
91
+ env['position_in_factory'] = position_in_factory
92
+ has_set_position['position_in_factory'] = true
93
+ end
94
+
95
+ option_parser.on('--px',
96
+ '--position-in-fixture [before|top|after|bottom]',
97
+ ANNOTATION_POSITIONS,
98
+ 'Place the annotations at the top (before) or the bottom (after) of any fixture files') do |position_in_fixture|
99
+ env['position_in_fixture'] = position_in_fixture
100
+ has_set_position['position_in_fixture'] = true
101
+ end
102
+
103
+ option_parser.on('--pt',
104
+ '--position-in-test [before|top|after|bottom]',
105
+ ANNOTATION_POSITIONS,
106
+ 'Place the annotations at the top (before) or the bottom (after) of any test files') do |position_in_test|
107
+ env['position_in_test'] = position_in_test
108
+ has_set_position['position_in_test'] = true
109
+ end
110
+
111
+ option_parser.on('--pr',
112
+ '--position-in-routes [before|top|after|bottom]',
113
+ ANNOTATION_POSITIONS,
114
+ 'Place the annotations at the top (before) or the bottom (after) of the routes.rb file') do |position_in_routes|
115
+ env['position_in_routes'] = position_in_routes
116
+ has_set_position['position_in_routes'] = true
117
+ end
118
+
119
+ option_parser.on('--ps',
120
+ '--position-in-serializer [before|top|after|bottom]',
121
+ ANNOTATION_POSITIONS,
122
+ 'Place the annotations at the top (before) or the bottom (after) of the serializer files') do |position_in_serializer|
123
+ env['position_in_serializer'] = position_in_serializer
124
+ has_set_position['position_in_serializer'] = true
125
+ end
126
+
127
+ option_parser.on('--w',
128
+ '--wrapper STR',
129
+ 'Wrap annotation with the text passed as parameter.',
130
+ 'If --w option is used, the same text will be used as opening and closing') do |wrapper|
131
+ env['wrapper'] = wrapper
132
+ end
133
+
134
+ option_parser.on('--wo',
135
+ '--wrapper-open STR',
136
+ 'Annotation wrapper opening.') do |wrapper_open|
137
+ env['wrapper_open'] = wrapper_open
138
+ end
139
+
140
+ option_parser.on('--wc',
141
+ '--wrapper-close STR',
142
+ 'Annotation wrapper closing') do |wrapper_close|
143
+ env['wrapper_close'] = wrapper_close
144
+ end
145
+
146
+ option_parser.on('-r',
147
+ '--routes',
148
+ "Annotate routes.rb with the output of 'rake routes'") do
149
+ env['routes'] = 'true'
150
+ end
151
+
152
+ option_parser.on('--models',
153
+ "Annotate ActiveRecord models") do
154
+ env['models'] = 'true'
155
+ end
156
+
157
+ option_parser.on('-a',
158
+ '--active-admin',
159
+ 'Annotate active_admin models') do
160
+ env['active_admin'] = 'true'
161
+ end
162
+
163
+ option_parser.on('-v',
164
+ '--version',
165
+ 'Show the current version of this gem') do
166
+ puts "annotate v#{Annotate.version}"
167
+ @options[:exit] = true
168
+ end
169
+
170
+ option_parser.on('-m',
171
+ '--show-migration',
172
+ 'Include the migration version number in the annotation') do
173
+ env['include_version'] = 'yes'
174
+ end
175
+
176
+ option_parser.on('-k',
177
+ '--show-foreign-keys',
178
+ "List the table's foreign key constraints in the annotation") do
179
+ env['show_foreign_keys'] = 'yes'
180
+ end
181
+
182
+ option_parser.on('--ck',
183
+ '--complete-foreign-keys',
184
+ 'Complete foreign key names in the annotation') do
185
+ env['show_foreign_keys'] = 'yes'
186
+ env['show_complete_foreign_keys'] = 'yes'
187
+ end
188
+
189
+ option_parser.on('-i',
190
+ '--show-indexes',
191
+ "List the table's database indexes in the annotation") do
192
+ env['show_indexes'] = 'yes'
193
+ end
194
+
195
+ option_parser.on('-s',
196
+ '--simple-indexes',
197
+ "Concat the column's related indexes in the annotation") do
198
+ env['simple_indexes'] = 'yes'
199
+ end
200
+
201
+ option_parser.on('--model-dir dir',
202
+ "Annotate model files stored in dir rather than app/models, separate multiple dirs with commas") do |dir|
203
+ env['model_dir'] = dir
204
+ end
205
+
206
+ option_parser.on('--root-dir dir',
207
+ "Annotate files stored within root dir projects, separate multiple dirs with commas") do |dir|
208
+ env['root_dir'] = dir
209
+ end
210
+
211
+ option_parser.on('--ignore-model-subdirects',
212
+ "Ignore subdirectories of the models directory") do
213
+ env['ignore_model_sub_dir'] = 'yes'
214
+ end
215
+
216
+ option_parser.on('--sort',
217
+ "Sort columns alphabetically, rather than in creation order") do
218
+ env['sort'] = 'yes'
219
+ end
220
+
221
+ option_parser.on('--classified-sort',
222
+ "Sort columns alphabetically, but first goes id, then the rest columns, then the timestamp columns and then the association columns") do
223
+ env['classified_sort'] = 'yes'
224
+ end
225
+
226
+ option_parser.on('-R',
227
+ '--require path',
228
+ "Additional file to require before loading models, may be used multiple times") do |path|
229
+ env['require'] = if env['require'].present?
230
+ "#{env['require']},#{path}"
231
+ else
232
+ path
233
+ end
234
+ end
235
+
236
+ option_parser.on('-e',
237
+ '--exclude [tests,fixtures,factories,serializers]',
238
+ Array,
239
+ "Do not annotate fixtures, test files, factories, and/or serializers") do |exclusions|
240
+ exclusions ||= EXCLUSION_LIST
241
+ exclusions.each { |exclusion| env["exclude_#{exclusion}"] = 'yes' }
242
+ end
243
+
244
+ option_parser.on('-f',
245
+ '--format [bare|rdoc|yard|markdown]',
246
+ FORMAT_TYPES,
247
+ 'Render Schema Infomation as plain/RDoc/Yard/Markdown') do |format_type|
248
+ env["format_#{format_type}"] = 'yes'
249
+ end
250
+
251
+ option_parser.on('--force',
252
+ 'Force new annotations even if there are no changes.') do
253
+ env['force'] = 'yes'
254
+ end
255
+
256
+ option_parser.on('--frozen',
257
+ 'Do not allow to change annotations. Exits non-zero if there are going to be changes to files.') do
258
+ env['frozen'] = 'yes'
259
+ end
260
+
261
+ option_parser.on('--timestamp',
262
+ 'Include timestamp in (routes) annotation') do
263
+ env['timestamp'] = 'true'
264
+ end
265
+
266
+ option_parser.on('--trace',
267
+ 'If unable to annotate a file, print the full stack trace, not just the exception message.') do
268
+ env['trace'] = 'yes'
269
+ end
270
+
271
+ option_parser.on('-I',
272
+ '--ignore-columns REGEX',
273
+ "don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'`") do |regex|
274
+ env['ignore_columns'] = regex
275
+ end
276
+
277
+ option_parser.on('--ignore-routes REGEX',
278
+ "don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'`") do |regex|
279
+ env['ignore_routes'] = regex
280
+ end
281
+
282
+ option_parser.on('--hide-limit-column-types VALUES',
283
+ "don't show limit for given column types, separated by commas (i.e., `integer,boolean,text`)") do |values|
284
+ env['hide_limit_column_types'] = values.to_s
285
+ end
286
+
287
+ option_parser.on('--hide-default-column-types VALUES',
288
+ "don't show default for given column types, separated by commas (i.e., `json,jsonb,hstore`)") do |values|
289
+ env['hide_default_column_types'] = values.to_s
290
+ end
291
+
292
+ option_parser.on('--ignore-unknown-models',
293
+ "don't display warnings for bad model files") do
294
+ env['ignore_unknown_models'] = 'true'
295
+ end
296
+
297
+ option_parser.on('--with-comment',
298
+ "include database comments in model annotations") do
299
+ env['with_comment'] = 'true'
300
+ end
301
+ end
302
+ end
303
+ end
@@ -1,5 +1,5 @@
1
1
  module Annotate
2
2
  def self.version
3
- '2.6.3'
3
+ '3.2.0'
4
4
  end
5
5
  end
data/lib/annotate.rb CHANGED
@@ -1,103 +1,92 @@
1
- $:.unshift(File.dirname(__FILE__))
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  require 'annotate/version'
3
3
  require 'annotate/annotate_models'
4
4
  require 'annotate/annotate_routes'
5
+ require 'annotate/constants'
6
+ require 'annotate/helpers'
5
7
 
6
8
  begin
7
9
  # ActiveSupport 3.x...
8
10
  require 'active_support/hash_with_indifferent_access'
9
- rescue Exception => e
11
+ require 'active_support/core_ext/object/blank'
12
+ rescue StandardError
10
13
  # ActiveSupport 2.x...
11
14
  require 'active_support/core_ext/hash/indifferent_access'
15
+ require 'active_support/core_ext/blank'
12
16
  end
13
17
 
14
18
  module Annotate
15
- ##
16
- # The set of available options to customize the behavior of Annotate.
17
- #
18
- POSITION_OPTIONS=[
19
- :position_in_routes, :position_in_class, :position_in_test,
20
- :position_in_fixture, :position_in_factory, :position,
21
- ]
22
- FLAG_OPTIONS=[
23
- :show_indexes, :simple_indexes, :include_version, :exclude_tests,
24
- :exclude_fixtures, :exclude_factories, :ignore_model_sub_dir,
25
- :format_bare, :format_rdoc, :format_markdown, :sort, :force, :trace,
26
- ]
27
- OTHER_OPTIONS=[
28
- :model_dir, :ignore_columns
29
- ]
30
- PATH_OPTIONS=[
31
- :require,
32
- ]
33
-
34
-
35
19
  ##
36
20
  # Set default values that can be overridden via environment variables.
37
21
  #
38
22
  def self.set_defaults(options = {})
39
- return if(@has_set_defaults)
23
+ return if @has_set_defaults
40
24
  @has_set_defaults = true
41
- options = HashWithIndifferentAccess.new(options)
42
- [POSITION_OPTIONS, FLAG_OPTIONS, PATH_OPTIONS].flatten.each do |key|
43
- if(options.has_key?(key))
44
- default_value = if(options[key].is_a?(Array))
45
- options[key].join(",")
46
- else
47
- options[key]
48
- end
25
+
26
+ options = ActiveSupport::HashWithIndifferentAccess.new(options)
27
+
28
+ Constants::ALL_ANNOTATE_OPTIONS.flatten.each do |key|
29
+ if options.key?(key)
30
+ default_value = if options[key].is_a?(Array)
31
+ options[key].join(',')
32
+ else
33
+ options[key]
34
+ end
49
35
  end
50
- default_value = ENV[key.to_s] if(!ENV[key.to_s].blank?)
51
- ENV[key.to_s] = default_value.to_s
36
+
37
+ default_value = ENV[key.to_s] unless ENV[key.to_s].blank?
38
+ ENV[key.to_s] = default_value.nil? ? nil : default_value.to_s
52
39
  end
53
40
  end
54
41
 
55
- TRUE_RE = /^(true|t|yes|y|1)$/i
42
+ ##
43
+ # TODO: what is the difference between this and set_defaults?
44
+ #
56
45
  def self.setup_options(options = {})
57
- POSITION_OPTIONS.each do |key|
58
- options[key] = fallback(ENV[key.to_s], ENV['position'], 'before')
46
+ Constants::POSITION_OPTIONS.each do |key|
47
+ options[key] = Annotate::Helpers.fallback(ENV[key.to_s], ENV['position'], 'before')
59
48
  end
60
- FLAG_OPTIONS.each do |key|
61
- options[key] = true?(ENV[key.to_s])
49
+ Constants::FLAG_OPTIONS.each do |key|
50
+ options[key] = Annotate::Helpers.true?(ENV[key.to_s])
62
51
  end
63
- OTHER_OPTIONS.each do |key|
64
- options[key] = (!ENV[key.to_s].blank?) ? ENV[key.to_s] : nil
52
+ Constants::OTHER_OPTIONS.each do |key|
53
+ options[key] = !ENV[key.to_s].blank? ? ENV[key.to_s] : nil
65
54
  end
66
- PATH_OPTIONS.each do |key|
67
- options[key] = (!ENV[key.to_s].blank?) ? ENV[key.to_s].split(',') : []
55
+ Constants::PATH_OPTIONS.each do |key|
56
+ options[key] = !ENV[key.to_s].blank? ? ENV[key.to_s].split(',') : []
68
57
  end
69
58
 
70
- if(!options[:model_dir])
71
- options[:model_dir] = 'app/models'
72
- end
59
+ options[:additional_file_patterns] ||= []
60
+ options[:additional_file_patterns] = options[:additional_file_patterns].split(',') if options[:additional_file_patterns].is_a?(String)
61
+ options[:model_dir] = ['app/models'] if options[:model_dir].empty?
73
62
 
74
- return options
75
- end
63
+ options[:wrapper_open] ||= options[:wrapper]
64
+ options[:wrapper_close] ||= options[:wrapper]
76
65
 
77
- def self.skip_on_migration?
78
- ENV['skip_on_db_migrate'] =~ TRUE_RE
79
- end
66
+ # These were added in 2.7.0 but so this is to revert to old behavior by default
67
+ options[:exclude_scaffolds] = Annotate::Helpers.true?(ENV.fetch('exclude_scaffolds', 'true'))
68
+ options[:exclude_controllers] = Annotate::Helpers.true?(ENV.fetch('exclude_controllers', 'true'))
69
+ options[:exclude_helpers] = Annotate::Helpers.true?(ENV.fetch('exclude_helpers', 'true'))
80
70
 
81
- def self.loaded_tasks=(val); @loaded_tasks = val; end
82
- def self.loaded_tasks; return @loaded_tasks; end
71
+ options
72
+ end
83
73
 
84
74
  def self.load_tasks
85
- return if(self.loaded_tasks)
86
- self.loaded_tasks = true
75
+ return if @tasks_loaded
87
76
 
88
- Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each { |rake| load rake }
89
- end
77
+ Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each do |rake|
78
+ load rake
79
+ end
90
80
 
91
- def self.load_requires(options)
92
- options[:require].each { |path| require path } if options[:require].count > 0
81
+ @tasks_loaded = true
93
82
  end
94
83
 
95
84
  def self.eager_load(options)
96
- self.load_requires(options)
97
- require "annotate/active_record_patch"
85
+ load_requires(options)
86
+ require 'annotate/active_record_patch'
98
87
 
99
- if(defined?(Rails))
100
- if(Rails.version.split('.').first.to_i < 3)
88
+ if defined?(Rails::Application)
89
+ if Rails.version.split('.').first.to_i < 3
101
90
  Rails.configuration.eager_load_paths.each do |load_path|
102
91
  matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/
103
92
  Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
@@ -109,8 +98,10 @@ module Annotate
109
98
  klass.eager_load!
110
99
  end
111
100
  else
112
- FileList["#{options[:model_dir]}/**/*.rb"].each do |fname|
113
- require File.expand_path(fname)
101
+ options[:model_dir].each do |dir|
102
+ FileList["#{dir}/**/*.rb"].each do |fname|
103
+ require File.expand_path(fname)
104
+ end
114
105
  end
115
106
  end
116
107
  end
@@ -118,33 +109,37 @@ module Annotate
118
109
  def self.bootstrap_rake
119
110
  begin
120
111
  require 'rake/dsl_definition'
121
- rescue Exception => e
112
+ rescue StandardError => e
122
113
  # We might just be on an old version of Rake...
114
+ $stderr.puts e.message
115
+ exit e.status_code
123
116
  end
124
117
  require 'rake'
125
118
 
126
- if File.exists?('./Rakefile')
127
- load './Rakefile'
119
+ load './Rakefile' if File.exist?('./Rakefile')
120
+ begin
121
+ Rake::Task[:environment].invoke
122
+ rescue
123
+ nil
128
124
  end
129
- Rake::Task[:environment].invoke rescue nil
130
- if(!defined?(Rails))
125
+ unless defined?(Rails)
131
126
  # Not in a Rails project, so time to load up the parts of
132
127
  # ActiveSupport we need.
133
128
  require 'active_support'
134
129
  require 'active_support/core_ext/class/subclasses'
135
130
  require 'active_support/core_ext/string/inflections'
136
131
  end
137
- self.load_tasks
132
+
133
+ load_tasks
138
134
  Rake::Task[:set_annotation_options].invoke
139
135
  end
140
136
 
141
- def self.fallback(*args)
142
- return args.detect { |arg| !arg.blank? }
143
- end
137
+ class << self
138
+ private
144
139
 
145
- def self.true?(val)
146
- return false if(val.blank?)
147
- return false unless(val =~ TRUE_RE)
148
- return true
140
+ def load_requires(options)
141
+ options[:require].count > 0 &&
142
+ options[:require].each { |path| require path }
143
+ end
149
144
  end
150
145
  end
@@ -1,14 +1,15 @@
1
+ require 'annotate'
2
+
1
3
  module Annotate
2
4
  module Generators
3
5
  class InstallGenerator < Rails::Generators::Base
4
- desc "Copy annotate_models rakefiles for automatic annotation"
5
- source_root File.expand_path('../templates', __FILE__)
6
+ desc 'Copy annotate_models rakefiles for automatic annotation'
7
+ source_root File.expand_path('templates', __dir__)
6
8
 
7
9
  # copy rake tasks
8
10
  def copy_tasks
9
- template "auto_annotate_models.rake", "lib/tasks/auto_annotate_models.rake"
11
+ template 'auto_annotate_models.rake', 'lib/tasks/auto_annotate_models.rake'
10
12
  end
11
-
12
13
  end
13
14
  end
14
15
  end
@@ -1,33 +1,58 @@
1
1
  # NOTE: only doing this in development as some production environments (Heroku)
2
2
  # NOTE: are sensitive to local FS writes, and besides -- it's just not proper
3
3
  # NOTE: to have a dev-mode tool do its thing in production.
4
- if(Rails.env.development?)
4
+ if Rails.env.development?
5
+ require 'annotate'
5
6
  task :set_annotation_options do
6
7
  # You can override any of these by setting an environment variable of the
7
8
  # same name.
8
- Annotate.set_defaults({
9
- 'position_in_routes' => "before",
10
- 'position_in_class' => "before",
11
- 'position_in_test' => "before",
12
- 'position_in_fixture' => "before",
13
- 'position_in_factory' => "before",
14
- 'show_indexes' => "true",
15
- 'simple_indexes' => "false",
16
- 'model_dir' => "app/models",
17
- 'include_version' => "false",
18
- 'require' => "",
19
- 'exclude_tests' => "false",
20
- 'exclude_fixtures' => "false",
21
- 'exclude_factories' => "false",
22
- 'ignore_model_sub_dir' => "false",
23
- 'skip_on_db_migrate' => "false",
24
- 'format_bare' => "true",
25
- 'format_rdoc' => "false",
26
- 'format_markdown' => "false",
27
- 'sort' => "false",
28
- 'force' => "false",
29
- 'trace' => "false",
30
- })
9
+ Annotate.set_defaults(
10
+ 'active_admin' => 'false',
11
+ 'additional_file_patterns' => [],
12
+ 'routes' => 'false',
13
+ 'models' => 'true',
14
+ 'position_in_routes' => 'before',
15
+ 'position_in_class' => 'before',
16
+ 'position_in_test' => 'before',
17
+ 'position_in_fixture' => 'before',
18
+ 'position_in_factory' => 'before',
19
+ 'position_in_serializer' => 'before',
20
+ 'show_foreign_keys' => 'true',
21
+ 'show_complete_foreign_keys' => 'false',
22
+ 'show_indexes' => 'true',
23
+ 'simple_indexes' => 'false',
24
+ 'model_dir' => 'app/models',
25
+ 'root_dir' => '',
26
+ 'include_version' => 'false',
27
+ 'require' => '',
28
+ 'exclude_tests' => 'false',
29
+ 'exclude_fixtures' => 'false',
30
+ 'exclude_factories' => 'false',
31
+ 'exclude_serializers' => 'false',
32
+ 'exclude_scaffolds' => 'true',
33
+ 'exclude_controllers' => 'true',
34
+ 'exclude_helpers' => 'true',
35
+ 'exclude_sti_subclasses' => 'false',
36
+ 'ignore_model_sub_dir' => 'false',
37
+ 'ignore_columns' => nil,
38
+ 'ignore_routes' => nil,
39
+ 'ignore_unknown_models' => 'false',
40
+ 'hide_limit_column_types' => '<%= AnnotateModels::NO_LIMIT_COL_TYPES.join(",") %>',
41
+ 'hide_default_column_types' => '<%= AnnotateModels::NO_DEFAULT_COL_TYPES.join(",") %>',
42
+ 'skip_on_db_migrate' => 'false',
43
+ 'format_bare' => 'true',
44
+ 'format_rdoc' => 'false',
45
+ 'format_yard' => 'false',
46
+ 'format_markdown' => 'false',
47
+ 'sort' => 'false',
48
+ 'force' => 'false',
49
+ 'frozen' => 'false',
50
+ 'classified_sort' => 'true',
51
+ 'trace' => 'false',
52
+ 'wrapper_open' => nil,
53
+ 'wrapper_close' => nil,
54
+ 'with_comment' => 'true'
55
+ )
31
56
  end
32
57
 
33
58
  Annotate.load_tasks