class BrainDamage::ResourceGenerator
Attributes
resource[RW]
resource_root[RW]
Public Class Methods
start(args, config)
click to toggle source
Calls superclass method
# File lib/generators/brain_damage/resource/resource_generator.rb, line 24 def self.start(args, config) self.resource = get_resource_description args args = resource.parametizer.as_cmd_parameters + ['--force', '--no-test-framework', '--no-routes'] # always force views @ignore_migration = self.resource.migration.skip? if @ignore_migration args << '--no-migration' end hook_for :resource_route, required: true, in: :rails unless self.has_already_added_route? model_file_name = File.join('app/models', "#{@resource.name.underscore.downcase}.rb") resource.model.setup model_file_name super end
Protected Class Methods
get_base_file()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 85 def self.get_base_file base_file = Rails.root+'desc/base.rb' return File.open base_file if File.exists? base_file end
get_description_file_from_args(args)
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 90 def self.get_description_file_from_args(args) description = args.select{ |arg| arg.starts_with? '--description' or arg.starts_with? '-d' }.first return nil unless description file_name = description.split('=').last.strip if file_name =~ /^\d+/ full_file_name = Rails.root+'desc/'+file_name else # Try to find a directory file_glob = '*.'+file_name full_file_name = Dir[Rails.root+'desc/'+file_glob].first if full_file_name.blank? # No directory? Try a file file_glob += '.rb' full_file_name = Dir[Rails.root+'desc/'+file_glob].first end end if full_file_name.blank? raise "Couldn't find any file related with #{description}" else if File.directory? full_file_name self.resource_root = full_file_name return File.open "#{resource_root}/#{file_name.gsub(/^\d+\./, '')}.rb" end return File.open full_file_name end end
get_resource_description(args)
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 80 def self.get_resource_description(args) initializers = [get_base_file, get_description_file_from_args(args)].reject(&:nil?) BrainDamage::Resource.new initializers, { root: resource_root } end
has_already_added_route?()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 126 def self.has_already_added_route? File.read(Rails.root+'config/routes.rb').include? "resources :#{resource.name.pluralize.underscore}" end
Public Instance Methods
generate_controller()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 47 def generate_controller file_name = File.join('app/controllers', controller_class_path, "#{controller_file_name}_controller.rb") @resource.controller.setup file_name create_file(@resource.controller.current_file_name) { @resource.controller.generate } end
generate_model()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 53 def generate_model create_file(@resource.model.current_file_name) { @resource.model.generate } end
generate_views()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 57 def generate_views @resource.views.views.each do |view| target_file_name = File.join('app/views/', controller_file_name, view.file_name) unless Templateable::ViewTemplateable.skip_overwrite? target_file_name create_file(target_file_name) { view.render } end end end
improve_migration_code()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 67 def improve_migration_code return if @ignore_migration file_name = @resource.migration.migration_file_full_path return unless file_name and File.exists? file_name file_contents = File.read file_name File.open(file_name, 'w+') do |f| f.write @resource.migration.improve_code file_contents end end
set_resource_object()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 42 def set_resource_object @resource = self.class.resource @resource.setup self end
Protected Instance Methods
handler()
click to toggle source
# File lib/generators/brain_damage/resource/resource_generator.rb, line 130 def handler :haml end
method_missing(method, *args, &block)
click to toggle source
Calls superclass method
# File lib/generators/brain_damage/resource/resource_generator.rb, line 134 def method_missing(method, *args, &block) puts "BrainDamage: Failed to delegate #{method} (on: #{self.class.to_s})" super end