annotate 2.7.0 → 2.7.1
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.
- checksums.yaml +4 -4
- data/AUTHORS.rdoc +1 -0
- data/CHANGELOG.rdoc +3 -0
- data/README.rdoc +9 -5
- data/annotate.gemspec +2 -2
- data/bin/annotate +47 -44
- data/lib/annotate.rb +59 -45
- data/lib/annotate/active_record_patch.rb +1 -1
- data/lib/annotate/annotate_models.rb +212 -156
- data/lib/annotate/annotate_routes.rb +94 -80
- data/lib/annotate/version.rb +1 -1
- data/lib/generators/annotate/install_generator.rb +2 -3
- data/lib/generators/annotate/templates/auto_annotate_models.rake +6 -5
- data/lib/tasks/annotate_models.rake +12 -10
- data/lib/tasks/annotate_routes.rake +1 -0
- metadata +11 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e6c2484a81d38c69c86e48305ae0a1b8724e5b1
|
4
|
+
data.tar.gz: 7463f0ee24a0023b105dc5e48fc9eec49559de0e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d4dd08320d2fa1b85c21afdeb1fd5daa4ec6cd39877d70a0681b04ce7453f6fd204da258b0a9d20fe22d4eb4649d44c086383a20db3fe4c6b183ac35a8e1171c
|
7
|
+
data.tar.gz: 25101a0b978d74579bd47e2dba28a3b89fc738fe19966c50a78aaa43543748c5cd523ff7c7be3b708caa80925092a553a28f4dc6b55b6e91547d9ec5fdbb810f
|
data/AUTHORS.rdoc
CHANGED
data/CHANGELOG.rdoc
CHANGED
data/README.rdoc
CHANGED
@@ -1,7 +1,10 @@
|
|
1
1
|
== Annotate (aka AnnotateModels)
|
2
2
|
|
3
3
|
{<img src="https://badge.fury.io/rb/annotate.svg" alt="Gem Version" />}[http://badge.fury.io/rb/annotate]
|
4
|
+
{<img src="https://img.shields.io/gem/dt/annotate.svg?style=flat" />}[https://rubygems.org/gems/annotate]
|
4
5
|
{<img src="https://travis-ci.org/ctran/annotate_models.png" />}[https://travis-ci.org/ctran/annotate_models]
|
6
|
+
{<img src="https://coveralls.io/repos/ctran/annotate_models/badge.svg?branch=develop" />}[https://coveralls.io/r/ctran/annotate_models?branch=develop]
|
7
|
+
{<img src="https://codeclimate.com/github/ctran/annotate_models/badges/gpa.svg" />}[https://codeclimate.com/github/ctran/annotate_models]
|
5
8
|
{<img src="https://gemnasium.com/ctran/annotate_models.png" />}[https://gemnasium.com/ctran/annotate_models]
|
6
9
|
|
7
10
|
Add a comment summarizing the current schema to the top or bottom of each of
|
@@ -44,7 +47,7 @@ It also annotates geometrical columns, geom type and srid, when using
|
|
44
47
|
# path :geometry line_string, 4326
|
45
48
|
|
46
49
|
Also, if you pass the -r option, it'll annotate routes.rb with the output of
|
47
|
-
|
50
|
+
<code>rake routes</code>.
|
48
51
|
|
49
52
|
|
50
53
|
== Install
|
@@ -71,7 +74,7 @@ Into environment gems from Github checkout:
|
|
71
74
|
|
72
75
|
== Usage
|
73
76
|
|
74
|
-
(If you used the Gemfile install, prefix the below commands with
|
77
|
+
(If you used the Gemfile install, prefix the below commands with <code>bundle exec</code>.)
|
75
78
|
|
76
79
|
=== Usage in Rails
|
77
80
|
|
@@ -100,7 +103,7 @@ To remove routes.rb annotations:
|
|
100
103
|
|
101
104
|
annotate --routes --delete
|
102
105
|
|
103
|
-
To automatically annotate every time you run
|
106
|
+
To automatically annotate every time you run <code>db:migrate</code>, either run <code>rails g annotate:install</code> or add +Annotate.load_tasks+ to your `Rakefile`. See the {configuration in Rails}[link:README.rdoc#configuration-in-rails] section for more info.
|
104
107
|
|
105
108
|
=== Usage Outside of Rails
|
106
109
|
|
@@ -136,7 +139,7 @@ functionality:
|
|
136
139
|
rake remove_annotation # Remove schema information from model and fixture files
|
137
140
|
|
138
141
|
By default, once you've generated a configuration file, annotate will be
|
139
|
-
executed whenever you run
|
142
|
+
executed whenever you run <code>rake db:migrate</code> (but only in development mode).
|
140
143
|
If you want to disable this behavior permanently, edit the +.rake+ file and
|
141
144
|
change:
|
142
145
|
|
@@ -146,7 +149,7 @@ To:
|
|
146
149
|
|
147
150
|
'skip_on_db_migrate' => 'true',
|
148
151
|
|
149
|
-
If you want to run
|
152
|
+
If you want to run <code>rake db:migrate</code> as a one-off without running annotate,
|
150
153
|
you can do so with a simple environment variable, instead of editing the
|
151
154
|
+.rake+ file:
|
152
155
|
|
@@ -175,6 +178,7 @@ you can do so with a simple environment variable, instead of editing the
|
|
175
178
|
--wo, --wrapper-open STR Annotation wrapper opening.
|
176
179
|
--wc, --wrapper-close STR Annotation wrapper closing
|
177
180
|
-r, --routes Annotate routes.rb with the output of 'rake routes'
|
181
|
+
-aa, --active-admin Annotate all activeadmin models
|
178
182
|
-v, --version Show the current version of this gem
|
179
183
|
-m, --show-migration Include the migration version number in the annotation
|
180
184
|
-i, --show-indexes List the table's database indexes in the annotation
|
data/annotate.gemspec
CHANGED
@@ -26,10 +26,10 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.specification_version = 4
|
27
27
|
|
28
28
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
29
|
-
s.add_runtime_dependency(%q<rake>, ["
|
29
|
+
s.add_runtime_dependency(%q<rake>, [">= 10.4", "< 12.0"])
|
30
30
|
s.add_runtime_dependency(%q<activerecord>, [">= 3.2", "< 6.0"])
|
31
31
|
else
|
32
|
-
s.add_dependency(%q<rake>, ["
|
32
|
+
s.add_dependency(%q<rake>, [">= 10.4", "< 12.0"])
|
33
33
|
s.add_dependency(%q<activerecord>, [">= 3.2", "< 6.0"])
|
34
34
|
end
|
35
35
|
else
|
data/bin/annotate
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
unless File.
|
4
|
-
abort
|
3
|
+
unless File.exist?('./Rakefile') || File.exist?('./Gemfile')
|
4
|
+
abort 'Please run annotate from the root of the project.'
|
5
5
|
end
|
6
6
|
|
7
7
|
require 'rubygems'
|
8
8
|
begin
|
9
9
|
require 'bundler'
|
10
10
|
Bundler.setup
|
11
|
-
rescue Exception
|
11
|
+
rescue Exception
|
12
12
|
end
|
13
13
|
|
14
14
|
here = File.expand_path(File.dirname __FILE__)
|
@@ -20,58 +20,55 @@ Annotate.bootstrap_rake
|
|
20
20
|
|
21
21
|
has_set_position = {}
|
22
22
|
target_action = :do_annotations
|
23
|
+
positions = %w(before top after bottom)
|
23
24
|
|
24
25
|
OptionParser.new do |opts|
|
25
|
-
opts.banner =
|
26
|
-
|
27
|
-
opts.on('-d', '--delete',
|
28
|
-
"Remove annotations from all model files or the routes.rb file") do
|
26
|
+
opts.banner = 'Usage: annotate [options] [model_file]*'
|
29
27
|
|
28
|
+
opts.on('-d', '--delete', 'Remove annotations from all model files or the routes.rb file') do
|
30
29
|
target_action = :remove_annotations
|
31
30
|
end
|
32
31
|
|
33
|
-
opts.on('-p', '--position [before|top|after|bottom]',
|
34
|
-
|
32
|
+
opts.on('-p', '--position [before|top|after|bottom]', positions,
|
33
|
+
'Place the annotations at the top (before) or the bottom (after) of the model/test/fixture/factory/route/serializer file(s)') do |p|
|
35
34
|
ENV['position'] = p
|
36
|
-
|
37
|
-
|
38
|
-
].each do |key|
|
39
|
-
ENV[key] = p unless(has_set_position[key])
|
35
|
+
%w(position_in_class position_in_factory position_in_fixture position_in_test position_in_routes position_in_serializer).each do |key|
|
36
|
+
ENV[key] = p unless (has_set_position[key])
|
40
37
|
end
|
41
38
|
end
|
42
39
|
|
43
|
-
opts.on('--pc', '--position-in-class [before|top|after|bottom]',
|
44
|
-
|
40
|
+
opts.on('--pc', '--position-in-class [before|top|after|bottom]', positions,
|
41
|
+
'Place the annotations at the top (before) or the bottom (after) of the model file') do |p|
|
45
42
|
ENV['position_in_class'] = p
|
46
43
|
has_set_position['position_in_class'] = true
|
47
44
|
end
|
48
45
|
|
49
|
-
opts.on('--pf', '--position-in-factory [before|top|after|bottom]',
|
50
|
-
|
46
|
+
opts.on('--pf', '--position-in-factory [before|top|after|bottom]', positions,
|
47
|
+
'Place the annotations at the top (before) or the bottom (after) of any factory files') do |p|
|
51
48
|
ENV['position_in_factory'] = p
|
52
49
|
has_set_position['position_in_factory'] = true
|
53
50
|
end
|
54
51
|
|
55
|
-
opts.on('--px', '--position-in-fixture [before|top|after|bottom]',
|
56
|
-
|
52
|
+
opts.on('--px', '--position-in-fixture [before|top|after|bottom]', positions,
|
53
|
+
'Place the annotations at the top (before) or the bottom (after) of any fixture files') do |p|
|
57
54
|
ENV['position_in_fixture'] = p
|
58
55
|
has_set_position['position_in_fixture'] = true
|
59
56
|
end
|
60
57
|
|
61
|
-
opts.on('--pt', '--position-in-test [before|top|after|bottom]',
|
62
|
-
|
58
|
+
opts.on('--pt', '--position-in-test [before|top|after|bottom]', positions,
|
59
|
+
'Place the annotations at the top (before) or the bottom (after) of any test files') do |p|
|
63
60
|
ENV['position_in_test'] = p
|
64
61
|
has_set_position['position_in_test'] = true
|
65
62
|
end
|
66
63
|
|
67
|
-
opts.on('--pr', '--position-in-routes [before|top|after|bottom]',
|
68
|
-
|
64
|
+
opts.on('--pr', '--position-in-routes [before|top|after|bottom]', positions,
|
65
|
+
'Place the annotations at the top (before) or the bottom (after) of the routes.rb file') do |p|
|
69
66
|
ENV['position_in_routes'] = p
|
70
67
|
has_set_position['position_in_routes'] = true
|
71
68
|
end
|
72
69
|
|
73
|
-
opts.on('--ps', '--position-in-serializer [before|top|after|bottom]',
|
74
|
-
|
70
|
+
opts.on('--ps', '--position-in-serializer [before|top|after|bottom]', positions,
|
71
|
+
'Place the annotations at the top (before) or the bottom (after) of the serializer files') do |p|
|
75
72
|
ENV['position_in_serializer'] = p
|
76
73
|
has_set_position['position_in_serializer'] = true
|
77
74
|
end
|
@@ -89,34 +86,36 @@ OptionParser.new do |opts|
|
|
89
86
|
ENV['wrapper_close'] = p
|
90
87
|
end
|
91
88
|
|
92
|
-
opts.on('-r', '--routes',
|
93
|
-
"Annotate routes.rb with the output of 'rake routes'") do
|
89
|
+
opts.on('-r', '--routes', "Annotate routes.rb with the output of 'rake routes'") do
|
94
90
|
ENV['routes'] = 'true'
|
95
91
|
end
|
96
92
|
|
93
|
+
opts.on('-aa', '--active-admin', 'Annotate active_admin models') do |p|
|
94
|
+
ENV['active_admin'] = p
|
95
|
+
end
|
96
|
+
|
97
97
|
opts.on('-v', '--version',
|
98
|
-
|
98
|
+
'Show the current version of this gem') do
|
99
99
|
puts "annotate v#{Annotate.version}"; exit
|
100
100
|
end
|
101
101
|
|
102
|
-
opts.on('-m', '--show-migration',
|
103
|
-
|
104
|
-
ENV['include_version'] = "yes"
|
102
|
+
opts.on('-m', '--show-migration', 'Include the migration version number in the annotation') do
|
103
|
+
ENV['include_version'] = 'yes'
|
105
104
|
end
|
106
105
|
|
107
106
|
opts.on('-k', '--show-foreign-keys',
|
108
107
|
"List the table's foreign key constraints in the annotation") do
|
109
|
-
ENV['show_foreign_keys'] =
|
108
|
+
ENV['show_foreign_keys'] = 'yes'
|
110
109
|
end
|
111
110
|
|
112
111
|
opts.on('-i', '--show-indexes',
|
113
112
|
"List the table's database indexes in the annotation") do
|
114
|
-
ENV['show_indexes'] =
|
113
|
+
ENV['show_indexes'] = 'yes'
|
115
114
|
end
|
116
115
|
|
117
116
|
opts.on('-s', '--simple-indexes',
|
118
117
|
"Concat the column's related indexes in the annotation") do
|
119
|
-
ENV['simple_indexes'] =
|
118
|
+
ENV['simple_indexes'] = 'yes'
|
120
119
|
end
|
121
120
|
|
122
121
|
opts.on('--model-dir dir',
|
@@ -131,17 +130,17 @@ OptionParser.new do |opts|
|
|
131
130
|
|
132
131
|
opts.on('--ignore-model-subdirects',
|
133
132
|
"Ignore subdirectories of the models directory") do |dir|
|
134
|
-
ENV['ignore_model_sub_dir'] =
|
133
|
+
ENV['ignore_model_sub_dir'] = 'yes'
|
135
134
|
end
|
136
135
|
|
137
136
|
opts.on('--sort',
|
138
137
|
"Sort columns alphabetically, rather than in creation order") do |dir|
|
139
|
-
ENV['sort'] =
|
138
|
+
ENV['sort'] = 'yes'
|
140
139
|
end
|
141
140
|
|
142
141
|
opts.on('--classified-sort',
|
143
142
|
"Sort columns alphabetically, but first goes id, then the rest columns, then the timestamp columns and then the association columns") do |dir|
|
144
|
-
ENV['classified_sort'] =
|
143
|
+
ENV['classified_sort'] = 'yes'
|
145
144
|
end
|
146
145
|
|
147
146
|
opts.on('-R', '--require path',
|
@@ -155,10 +154,10 @@ OptionParser.new do |opts|
|
|
155
154
|
|
156
155
|
opts.on('-e', '--exclude [tests,fixtures,factories,serializers]', Array, "Do not annotate fixtures, test files, factories, and/or serializers") do |exclusions|
|
157
156
|
exclusions ||= %w(tests fixtures factories)
|
158
|
-
exclusions.each { |exclusion| ENV["exclude_#{exclusion}"] =
|
157
|
+
exclusions.each { |exclusion| ENV["exclude_#{exclusion}"] = 'yes' }
|
159
158
|
end
|
160
159
|
|
161
|
-
opts.on('-f', '--format [bare|rdoc|markdown]',
|
160
|
+
opts.on('-f', '--format [bare|rdoc|markdown]', %w(bare rdoc markdown), 'Render Schema Infomation as plain/RDoc/Markdown') do |fmt|
|
162
161
|
ENV["format_#{fmt}"] = 'yes'
|
163
162
|
end
|
164
163
|
|
@@ -174,21 +173,25 @@ OptionParser.new do |opts|
|
|
174
173
|
ENV['trace'] = 'yes'
|
175
174
|
end
|
176
175
|
|
177
|
-
opts.on('-I', '--ignore-columns REGEX', "don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'`"
|
176
|
+
opts.on('-I', '--ignore-columns REGEX', "don't annotate columns that match a given REGEX (i.e., `annotate -I '^(id|updated_at|created_at)'`") do |regex|
|
178
177
|
ENV['ignore_columns'] = regex
|
179
178
|
end
|
180
179
|
|
181
|
-
opts.on('--
|
180
|
+
opts.on('--ignore-routes REGEX', "don't annotate routes that match a given REGEX (i.e., `annotate -I '(mobile|resque|pghero)'`") do |regex|
|
181
|
+
ENV['ignore_routes'] = regex
|
182
|
+
end
|
183
|
+
|
184
|
+
opts.on('--hide-limit-column-types VALUES', "don't show limit for given column types, separated by comas (i.e., `integer,boolean,text`)") do |values|
|
182
185
|
ENV['hide_limit_column_types'] = "#{values}"
|
183
186
|
end
|
184
187
|
|
185
|
-
opts.on('--ignore-unknown-models', "don't display warnings for bad model files"
|
186
|
-
ENV['ignore_unknown_models'] =
|
188
|
+
opts.on('--ignore-unknown-models', "don't display warnings for bad model files") do |values|
|
189
|
+
ENV['ignore_unknown_models'] = 'true'
|
187
190
|
end
|
188
191
|
|
189
192
|
end.parse!
|
190
193
|
|
191
|
-
options = Annotate.setup_options({
|
194
|
+
options = Annotate.setup_options({is_rake: ENV['is_rake'] && !ENV['is_rake'].empty?})
|
192
195
|
Annotate.eager_load(options)
|
193
196
|
|
194
197
|
AnnotateModels.send(target_action, options) if Annotate.include_models?
|
data/lib/annotate.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
2
2
|
require 'annotate/version'
|
3
3
|
require 'annotate/annotate_models'
|
4
4
|
require 'annotate/annotate_routes'
|
@@ -14,53 +14,57 @@ rescue Exception
|
|
14
14
|
end
|
15
15
|
|
16
16
|
module Annotate
|
17
|
+
TRUE_RE = /^(true|t|yes|y|1)$/i
|
18
|
+
|
17
19
|
##
|
18
20
|
# The set of available options to customize the behavior of Annotate.
|
19
21
|
#
|
20
|
-
POSITION_OPTIONS=[
|
22
|
+
POSITION_OPTIONS = [
|
21
23
|
:position_in_routes, :position_in_class, :position_in_test,
|
22
24
|
:position_in_fixture, :position_in_factory, :position,
|
23
25
|
:position_in_serializer
|
24
|
-
]
|
25
|
-
FLAG_OPTIONS=[
|
26
|
+
].freeze
|
27
|
+
FLAG_OPTIONS = [
|
26
28
|
:show_indexes, :simple_indexes, :include_version, :exclude_tests,
|
27
29
|
:exclude_fixtures, :exclude_factories, :ignore_model_sub_dir,
|
28
30
|
:format_bare, :format_rdoc, :format_markdown, :sort, :force, :trace,
|
29
31
|
:timestamp, :exclude_serializers, :classified_sort, :show_foreign_keys,
|
30
|
-
:exclude_scaffolds, :exclude_controllers, :exclude_helpers, :ignore_unknown_models
|
31
|
-
]
|
32
|
-
OTHER_OPTIONS=[
|
32
|
+
:exclude_scaffolds, :exclude_controllers, :exclude_helpers, :ignore_unknown_models
|
33
|
+
].freeze
|
34
|
+
OTHER_OPTIONS = [
|
33
35
|
:ignore_columns, :skip_on_db_migrate, :wrapper_open, :wrapper_close, :wrapper, :routes,
|
34
|
-
:hide_limit_column_types,
|
35
|
-
]
|
36
|
-
PATH_OPTIONS=[
|
36
|
+
:hide_limit_column_types, :ignore_routes, :active_admin
|
37
|
+
].freeze
|
38
|
+
PATH_OPTIONS = [
|
37
39
|
:require, :model_dir, :root_dir
|
38
|
-
]
|
40
|
+
].freeze
|
39
41
|
|
40
42
|
##
|
41
43
|
# Set default values that can be overridden via environment variables.
|
42
44
|
#
|
43
45
|
def self.set_defaults(options = {})
|
44
|
-
return if
|
46
|
+
return if @has_set_defaults
|
45
47
|
@has_set_defaults = true
|
46
48
|
|
47
49
|
options = HashWithIndifferentAccess.new(options)
|
48
50
|
|
49
51
|
[POSITION_OPTIONS, FLAG_OPTIONS, PATH_OPTIONS, OTHER_OPTIONS].flatten.each do |key|
|
50
|
-
if options.
|
52
|
+
if options.key?(key)
|
51
53
|
default_value = if options[key].is_a?(Array)
|
52
|
-
|
53
|
-
|
54
|
-
|
54
|
+
options[key].join(',')
|
55
|
+
else
|
56
|
+
options[key]
|
55
57
|
end
|
56
58
|
end
|
57
59
|
|
58
|
-
default_value = ENV[key.to_s]
|
60
|
+
default_value = ENV[key.to_s] unless ENV[key.to_s].blank?
|
59
61
|
ENV[key.to_s] = default_value.nil? ? nil : default_value.to_s
|
60
62
|
end
|
61
63
|
end
|
62
64
|
|
63
|
-
|
65
|
+
##
|
66
|
+
# TODO: what is the difference between this and set_defaults?
|
67
|
+
#
|
64
68
|
def self.setup_options(options = {})
|
65
69
|
POSITION_OPTIONS.each do |key|
|
66
70
|
options[key] = fallback(ENV[key.to_s], ENV['position'], 'before')
|
@@ -69,24 +73,24 @@ module Annotate
|
|
69
73
|
options[key] = true?(ENV[key.to_s])
|
70
74
|
end
|
71
75
|
OTHER_OPTIONS.each do |key|
|
72
|
-
options[key] =
|
76
|
+
options[key] = !ENV[key.to_s].blank? ? ENV[key.to_s] : nil
|
73
77
|
end
|
74
78
|
PATH_OPTIONS.each do |key|
|
75
|
-
options[key] =
|
76
|
-
end
|
77
|
-
|
78
|
-
if(options[:model_dir].empty?)
|
79
|
-
options[:model_dir] = ['app/models']
|
79
|
+
options[key] = !ENV[key.to_s].blank? ? ENV[key.to_s].split(',') : []
|
80
80
|
end
|
81
81
|
|
82
|
-
if
|
83
|
-
|
84
|
-
end
|
82
|
+
options[:model_dir] = ['app/models'] if options[:model_dir].empty?
|
83
|
+
options[:root_dir] = [''] if options[:root_dir].empty?
|
85
84
|
|
86
85
|
options[:wrapper_open] ||= options[:wrapper]
|
87
86
|
options[:wrapper_close] ||= options[:wrapper]
|
88
87
|
|
89
|
-
|
88
|
+
# These were added in 2.7.0 but so this is to revert to old behavior by default
|
89
|
+
options[:exclude_scaffolds] = Annotate.true?(ENV.fetch('exclude_scaffolds', 'true'))
|
90
|
+
options[:exclude_controllers] = Annotate.true?(ENV.fetch('exclude_controllers', 'true'))
|
91
|
+
options[:exclude_helpers] = Annotate.true?(ENV.fetch('exclude_helpers', 'true'))
|
92
|
+
|
93
|
+
options
|
90
94
|
end
|
91
95
|
|
92
96
|
def self.reset_options
|
@@ -107,11 +111,16 @@ module Annotate
|
|
107
111
|
true
|
108
112
|
end
|
109
113
|
|
110
|
-
def self.loaded_tasks=(val)
|
111
|
-
|
114
|
+
def self.loaded_tasks=(val)
|
115
|
+
@loaded_tasks = val
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.loaded_tasks
|
119
|
+
@loaded_tasks
|
120
|
+
end
|
112
121
|
|
113
122
|
def self.load_tasks
|
114
|
-
return if
|
123
|
+
return if loaded_tasks
|
115
124
|
self.loaded_tasks = true
|
116
125
|
|
117
126
|
Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each { |rake| load rake }
|
@@ -122,11 +131,11 @@ module Annotate
|
|
122
131
|
end
|
123
132
|
|
124
133
|
def self.eager_load(options)
|
125
|
-
|
126
|
-
require
|
134
|
+
load_requires(options)
|
135
|
+
require 'annotate/active_record_patch'
|
127
136
|
|
128
|
-
if
|
129
|
-
if
|
137
|
+
if defined?(Rails)
|
138
|
+
if Rails.version.split('.').first.to_i < 3
|
130
139
|
Rails.configuration.eager_load_paths.each do |load_path|
|
131
140
|
matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/
|
132
141
|
Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
|
@@ -149,33 +158,38 @@ module Annotate
|
|
149
158
|
def self.bootstrap_rake
|
150
159
|
begin
|
151
160
|
require 'rake/dsl_definition'
|
152
|
-
rescue Exception
|
161
|
+
rescue Exception => e
|
153
162
|
# We might just be on an old version of Rake...
|
163
|
+
puts e.message
|
164
|
+
exit e.status_code
|
154
165
|
end
|
155
166
|
require 'rake'
|
156
167
|
|
157
|
-
if File.
|
158
|
-
|
168
|
+
load './Rakefile' if File.exist?('./Rakefile')
|
169
|
+
begin
|
170
|
+
Rake::Task[:environment].invoke
|
171
|
+
rescue
|
172
|
+
nil
|
159
173
|
end
|
160
|
-
|
161
|
-
if(!defined?(Rails))
|
174
|
+
unless defined?(Rails)
|
162
175
|
# Not in a Rails project, so time to load up the parts of
|
163
176
|
# ActiveSupport we need.
|
164
177
|
require 'active_support'
|
165
178
|
require 'active_support/core_ext/class/subclasses'
|
166
179
|
require 'active_support/core_ext/string/inflections'
|
167
180
|
end
|
168
|
-
|
181
|
+
|
182
|
+
load_tasks
|
169
183
|
Rake::Task[:set_annotation_options].invoke
|
170
184
|
end
|
171
185
|
|
172
186
|
def self.fallback(*args)
|
173
|
-
|
187
|
+
args.detect { |arg| !arg.blank? }
|
174
188
|
end
|
175
189
|
|
176
190
|
def self.true?(val)
|
177
|
-
return false if
|
178
|
-
return false unless
|
179
|
-
|
191
|
+
return false if val.blank?
|
192
|
+
return false unless val =~ TRUE_RE
|
193
|
+
true
|
180
194
|
end
|
181
195
|
end
|