class ActiveFacts::Generators::Rails::ActiveAdmin
Constants
- MM
Public Class Methods
compatibility()
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 25 def self.compatibility # REVISIT: We depend on the surrogate option being enabled if any PK is not Rails-friendly [1, %i{relational}] # one relational composition end
new(constellation, composition, options = {})
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 30 def initialize constellation, composition, options = {} @constellation = constellation @composition = composition @options = options @option_keep = options.delete("keep") @option_output = options.delete("output") @option_output ||= 'app/admin' @option_output = nil if @option_output == "-" end
options()
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 18 def self.options ({ keep: ['Boolean', "Keep stale files"], output: [String, "Write admin config files into this output directory"], }) end
Public Instance Methods
extant_files()
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 50 def extant_files Dir[@option_output+'/*.rb'] end
generate_admin(composite)
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 54 def generate_admin composite columns = composite.mapping.all_leaf.flat_map do |component| # Absorbed empty subtypes appear as leaves next [] if component.is_a?(MM::Absorption) && component.parent_role.fact_type.is_a?(MM::TypeInheritance) ':' + component.column_name.snakecase end model = "ActiveAdmin.register #{composite.rails.class_name} do\n permit_params #{columns.join(', ')}\nend\n" return model unless @option_output filename = composite.rails.singular_name+'_admin.rb' out = create_if_ok(@option_output, filename) return nil unless out out.puts "#{HEADER}\n" + "\# #{([File.basename($0)]+ARGV)*' '}\n\n" + model ensure out.close if out nil end
generate_files()
click to toggle source
# File lib/activefacts/generator/rails/active_admin.rb, line 40 def generate_files admins = @composition. all_composite. sort_by {|composite| composite.mapping.name}. reject {|composite| composite.mapping.object_type.is_static}. map {|composite| generate_admin composite}. compact * "\n" end