class Adhoc::Generators::PortfolioGenerator

Attributes

attributes[RW]
name[RW]

Public Class Methods

new(*args, &block) click to toggle source
Calls superclass method
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 13
def initialize(*args, &block)
  super
  print_usage unless name.underscore =~ /^[a-z][a-z0-9_\/]+$/
  
  @attributes = []

  ['title:string', 'summary:string', 'description:string', 'service_id:integer'].each do |arg|
    @attributes << Rails::Generators::GeneratedAttribute.new(*arg.split(':'))
  end

end

Public Instance Methods

create_controller() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 33
def create_controller
  template 'controller.rb', "app/controllers/#{plural_name}_controller.rb"
  template 'helper.rb', "app/helpers/#{plural_name}_helper.rb"

  controller_views.each do |action|
    template "views/#{action}.html.erb", "app/views/#{plural_name}/#{action}.html.erb"
  end

  if form_partial?
    template "views/_form.html.erb", "app/views/#{plural_name}/_form.html.erb"
  end

  namespaces = plural_name.split('/')
  resource = namespaces.pop
  route namespaces.reverse.inject("resources :#{resource}") { |acc, namespace|
    "namespace(:#{namespace}){ #{acc} }"
  }
end
create_migration() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 29
def create_migration
  migration_template 'migration.rb', "db/migrate/create_#{table_name}.rb"
end
create_model() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 25
def create_model
  template 'model.rb', "app/models/#{file_name}.rb"
end

Private Instance Methods

action?(name) click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 102
def action?(name)
  controller_actions.include? name.to_s
end
actions?(*names) click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 106
def actions?(*names)
  names.all? { |name| action? name }
end
controller_actions() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 88
def controller_actions
  %w[index show new edit create update destroy]
end
controller_methods() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 92
def controller_methods
  controller_actions.map do |action|
    read_template("actions/#{action}.rb")
  end.join("\n").strip
end
controller_views() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 84
def controller_views
  %w[index show new edit]
end
file_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 54
def file_name # potfolio
  name.underscore
end
form_partial?() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 159
def form_partial?
  actions? :new, :edit
end
instance_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 76
def instance_name
  name.underscore.gsub('/','_')
end
instances_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 80
def instances_name
  instance_name.pluralize
end
item_path(options = {}) click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 126
def item_path(options = {})
  name = options[:instance_variable] ? "@#{instance_name}" : instance_name
  suffix = options[:full_url] ? "url" : "path"
  if options[:action].to_s == "new"
    "new_#{item_resource}_#{suffix}"
  elsif options[:action].to_s == "edit"
    "edit_#{item_resource}_#{suffix}(#{name})"
  else
    if name.include?('::')
      namespace = singular_name.split('/')[0..-2]
      "[:#{namespace.join(', :')}, #{name}]"
    else
      name
    end
  end
end
item_resource() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 114
def item_resource
  name.underscore.gsub('/','_')
end
item_url() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 143
def item_url
  if action? :show
    item_path(:full_url => true, :instance_variable => true)
  else
    items_url
  end
end
items_path() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 118
def items_path
  if action? :index
    "#{item_resource.pluralize}_path"
  else
    "root_path"
  end
end
items_url() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 151
def items_url
  if action? :index
    item_resource.pluralize + '_url'
  else
    "root_url"
  end
end
model_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 62
def model_name # Portfolio
  name.underscore.capitalize
end
plural_model_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 66
def plural_model_name # Portfolios
  plural_name.camelize
end
plural_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 58
def plural_name # portfolios
  name.underscore.pluralize
end
read_template(relative_path) click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 98
def read_template(relative_path)
  ERB.new(File.read(find_in_source_paths(relative_path)), nil, '-').result(binding)
end
render_form() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 163
def render_form
  if form_partial?
    "<%= render \"form\" %>"
  else
    read_template("views/_form.html.rb")
  end
end
singular_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 110
def singular_name
  name.underscore
end
table_name() click to toggle source
# File lib/generators/adhoc/portfolio/portfolio_generator.rb, line 70
def table_name # portfolios
  if name.include?('::')
    plural_name.gsub('/', '_')
  end
end