module Annotate
def self.bootstrap_rake
def self.bootstrap_rake begin require 'rake/dsl_definition' rescue Exception => e # We might just be on an old version of Rake... end require 'rake' if File.exists?('./Rakefile') load './Rakefile' end Rake::Task[:environment].invoke rescue nil if(!defined?(Rails)) # Not in a Rails project, so time to load up the parts of # ActiveSupport we need. require 'active_support' require 'active_support/core_ext/class/subclasses' require 'active_support/core_ext/string/inflections' end self.load_tasks Rake::Task[:set_annotation_options].invoke end
def self.eager_load(options)
def self.eager_load(options) self.load_requires(options) require "annotate/active_record_patch" if(defined?(Rails)) if(Rails.version.split('.').first.to_i < 3) Rails.configuration.eager_load_paths.each do |load_path| matcher = /\A#{Regexp.escape(load_path)}(.*)\.rb\Z/ Dir.glob("#{load_path}/**/*.rb").sort.each do |file| require_dependency file.sub(matcher, '\1') end end else klass = Rails::Application.send(:subclasses).first klass.eager_load! end else FileList["#{options[:model_dir]}/**/*.rb"].each do |fname| require File.expand_path(fname) end end end
def self.fallback(*args)
def self.fallback(*args) return args.detect { |arg| !arg.blank? } end
def self.load_requires(options)
def self.load_requires(options) options[:require].each { |path| require path } if options[:require].count > 0 end
def self.load_tasks
def self.load_tasks return if(self.loaded_tasks) self.loaded_tasks = true Dir[File.join(File.dirname(__FILE__), 'tasks', '**/*.rake')].each { |rake| load rake } end
def self.loaded_tasks; return @loaded_tasks; end
def self.loaded_tasks; return @loaded_tasks; end
def self.loaded_tasks=(val); @loaded_tasks = val; end
def self.loaded_tasks=(val); @loaded_tasks = val; end
def self.set_defaults(options = {})
Set default values that can be overridden via environment variables.
#
def self.set_defaults(options = {}) return if(@has_set_defaults) @has_set_defaults = true options = HashWithIndifferentAccess.new(options) [POSITION_OPTIONS, FLAG_OPTIONS, PATH_OPTIONS].flatten.each do |key| if(options.has_key?(key)) default_value = if(options[key].is_a?(Array)) options[key].join(",") else options[key] end end default_value = ENV[key.to_s] if(!ENV[key.to_s].blank?) ENV[key.to_s] = default_value.to_s end end
def self.setup_options(options = {})
def self.setup_options(options = {}) POSITION_OPTIONS.each do |key| options[key] = fallback(ENV[key.to_s], ENV['position'], 'before') end FLAG_OPTIONS.each do |key| options[key] = true?(ENV[key.to_s]) end OTHER_OPTIONS.each do |key| options[key] = (!ENV[key.to_s].blank?) ? ENV[key.to_s] : nil end PATH_OPTIONS.each do |key| options[key] = (!ENV[key.to_s].blank?) ? ENV[key.to_s].split(',') : [] end if(!options[:model_dir]) options[:model_dir] = 'app/models' end return options end
def self.skip_on_migration?
def self.skip_on_migration? ENV['skip_on_db_migrate'] =~ TRUE_RE end
def self.true?(val)
def self.true?(val) return false if(val.blank?) return false unless(val =~ TRUE_RE) return true end
def self.version
def self.version '2.6.0' end