Commit d093e995 by J Connolly

add option to ignore columns matching a regex with -I or --ignore-columns

parent aaab884f
......@@ -134,6 +134,11 @@ OptionParser.new do |opts|
opts.on('--trace', 'If unable to annotate a file, print the full stack trace, not just the exception message.') do |value|
ENV['trace'] = 'yes'
end
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|
ENV['ignore_columns'] = regex
end
end.parse!
......
......@@ -25,7 +25,7 @@ module Annotate
:format_bare, :format_rdoc, :format_markdown, :sort, :force, :trace,
]
OTHER_OPTIONS=[
:model_dir,
:model_dir, :ignore_columns
]
PATH_OPTIONS=[
:require,
......
......@@ -108,6 +108,9 @@ module AnnotateModels
end
cols = klass.columns
if options[:ignore_columns]
cols.reject! { |col| col.name.match(/#{options[:ignore_columns]}/) }
end
cols = cols.sort_by(&:name) if(options[:sort])
cols.each do |col|
attrs = []
......
......@@ -396,6 +396,12 @@ end
File.read(@model_file_name).should == "#{@file_content}\n#{another_schema_info}"
end
it 'should skip columns with option[:ignore_columns] set' do
output = AnnotateModels.get_schema_info(@klass, "== Schema Info",
:ignore_columns => '(id|updated_at|created_at)')
expect(output.match(/id/)).to be_nil
end
it "works with namespaced models (i.e. models inside modules/subdirectories)" do
(model_file_name, file_content) = write_model "foo/user.rb", <<-EOS
class Foo::User < ActiveRecord::Base
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment