class RailsWizard::Template

Attributes

args[R]
defaults[R]
gems[R]
recipes[R]

Public Class Methods

new(recipes, gems=[], args=[], defaults={}) click to toggle source
# File lib/rails_wizard/template.rb, line 5
def initialize(recipes, gems=[], args=[], defaults={})
  @recipes = recipes.map{|r| RailsWizard::Recipe.from_mongo(r)}
  @args = args
  @defaults = defaults
  unless defaults['prefs'].nil?
    @prefs = defaults['prefs']
  else
    @prefs = {}
  end
  unless defaults['gems'].nil?
    @gems = gems | defaults['gems']
  else
    @gems = gems
  end
end
render(template_name, binding = nil) click to toggle source
# File lib/rails_wizard/template.rb, line 29
def self.render(template_name, binding = nil)
  erb = ERB.new(File.open(template_root + '/' + template_name + '.erb').read)
  erb.result(binding)
end
template_root() click to toggle source
# File lib/rails_wizard/template.rb, line 21
def self.template_root
  @template_root ||= File.dirname(__FILE__) + '/../../templates'
end
template_root=(root) click to toggle source
# File lib/rails_wizard/template.rb, line 25
def self.template_root=(root)
  @template_root = root
end

Public Instance Methods

compile() click to toggle source
# File lib/rails_wizard/template.rb, line 100
def compile
  render 'layout', binding
end
custom_code() click to toggle source
# File lib/rails_wizard/template.rb, line 109
def custom_code; nil end
custom_code?() click to toggle source
# File lib/rails_wizard/template.rb, line 108
def custom_code?; false end
recipe_classes() click to toggle source
# File lib/rails_wizard/template.rb, line 78
def recipe_classes
  @recipe_classes ||= recipes.map{|r| RailsWizard::Recipe.from_mongo(r)}
end
recipes_with_dependencies() click to toggle source
# File lib/rails_wizard/template.rb, line 82
def recipes_with_dependencies
  @recipes_with_dependencies ||= recipe_classes

  added_more = false
  for recipe in recipe_classes
    recipe.requires.each do |requirement|
      requirement = RailsWizard::Recipe.from_mongo(requirement)
      count = @recipes_with_dependencies.size
      (@recipes_with_dependencies << requirement).uniq!
      unless @recipes_with_dependencies.size == count
        added_more = true
      end
    end
  end

  added_more ? recipes_with_dependencies : @recipes_with_dependencies
end
render(template_name, binding = nil) click to toggle source
# File lib/rails_wizard/template.rb, line 33
def render(template_name, binding = nil); self.class.render(template_name, binding) end
resolve_diagnostics_prefs() click to toggle source
# File lib/rails_wizard/template.rb, line 53
def resolve_diagnostics_prefs
  @resolve_diagnostics_prefs ||= begin
    RailsWizard::Diagnostics.prefs.inspect
  end
end
resolve_diagnostics_recipes() click to toggle source
# File lib/rails_wizard/template.rb, line 47
def resolve_diagnostics_recipes
  @resolve_diagnostics_recipes ||= begin
    RailsWizard::Diagnostics.recipes.inspect
  end
end
resolve_gems() click to toggle source
# File lib/rails_wizard/template.rb, line 41
def resolve_gems
  @resolve_gems ||= begin
    @gems.uniq.inspect
  end
end
resolve_preferences() click to toggle source
# File lib/rails_wizard/template.rb, line 35
def resolve_preferences
  @resolve_preferences ||= begin
    @prefs.inspect
  end
end
resolve_recipes() click to toggle source

Sort the recipes list taking ‘run_after’ directives into account.

# File lib/rails_wizard/template.rb, line 60
def resolve_recipes
  @resolve_recipes ||= begin
    list = recipes_with_dependencies

    for i in 0...list.size
      after_keys = list[i+1..-1].map { |r| r.key }

      if (list[i].run_after & after_keys).any?
        list.push list.slice!(i)
        redo
      end
    end

    list.each {|recipe| recipe.defaults = defaults[recipe.key] }
    list
  end
end