Class: RailsWizard::Template
- Inherits:
-
Object
- Object
- RailsWizard::Template
- Defined in:
- lib/rails_wizard/template.rb
Instance Attribute Summary collapse
-
#args ⇒ Object
readonly
Returns the value of attribute args.
-
#defaults ⇒ Object
readonly
Returns the value of attribute defaults.
-
#gems ⇒ Object
readonly
Returns the value of attribute gems.
-
#recipes ⇒ Object
readonly
Returns the value of attribute recipes.
Class Method Summary collapse
- .render(template_name, binding = nil) ⇒ Object
- .template_root ⇒ Object
- .template_root=(root) ⇒ Object
Instance Method Summary collapse
- #compile ⇒ Object
- #custom_code ⇒ Object
- #custom_code? ⇒ Boolean
-
#initialize(recipes, gems = [], args = [], defaults = {}) ⇒ Template
constructor
A new instance of Template.
- #recipe_classes ⇒ Object
- #recipes_with_dependencies ⇒ Object
- #render(template_name, binding = nil) ⇒ Object
- #resolve_diagnostics_prefs ⇒ Object
- #resolve_diagnostics_recipes ⇒ Object
- #resolve_gems ⇒ Object
- #resolve_preferences ⇒ Object
-
#resolve_recipes ⇒ Object
Sort the recipes list taking ‘run_after’ directives into account.
Constructor Details
#initialize(recipes, gems = [], args = [], defaults = {}) ⇒ Template
Returns a new instance of Template.
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
# 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 |
Instance Attribute Details
#args ⇒ Object (readonly)
Returns the value of attribute args.
3 4 5 |
# File 'lib/rails_wizard/template.rb', line 3 def args @args end |
#defaults ⇒ Object (readonly)
Returns the value of attribute defaults.
3 4 5 |
# File 'lib/rails_wizard/template.rb', line 3 def defaults @defaults end |
#gems ⇒ Object (readonly)
Returns the value of attribute gems.
3 4 5 |
# File 'lib/rails_wizard/template.rb', line 3 def gems @gems end |
#recipes ⇒ Object (readonly)
Returns the value of attribute recipes.
3 4 5 |
# File 'lib/rails_wizard/template.rb', line 3 def recipes @recipes end |
Class Method Details
.render(template_name, binding = nil) ⇒ Object
29 30 31 32 |
# 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 ⇒ Object
21 22 23 |
# File 'lib/rails_wizard/template.rb', line 21 def self.template_root @template_root ||= File.dirname(__FILE__) + '/../../templates' end |
Instance Method Details
#compile ⇒ Object
100 101 102 |
# File 'lib/rails_wizard/template.rb', line 100 def compile render 'layout', binding end |
#custom_code ⇒ Object
109 |
# File 'lib/rails_wizard/template.rb', line 109 def custom_code; nil end |
#custom_code? ⇒ Boolean
108 |
# File 'lib/rails_wizard/template.rb', line 108 def custom_code?; false end |
#recipe_classes ⇒ Object
78 79 80 |
# 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 ⇒ Object
82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
# 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) ⇒ Object
33 |
# File 'lib/rails_wizard/template.rb', line 33 def render(template_name, binding = nil); self.class.render(template_name, binding) end |
#resolve_diagnostics_prefs ⇒ Object
53 54 55 56 57 |
# 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 ⇒ Object
47 48 49 50 51 |
# File 'lib/rails_wizard/template.rb', line 47 def resolve_diagnostics_recipes @resolve_diagnostics_recipes ||= begin RailsWizard::Diagnostics.recipes.inspect end end |
#resolve_gems ⇒ Object
41 42 43 44 45 |
# File 'lib/rails_wizard/template.rb', line 41 def resolve_gems @resolve_gems ||= begin @gems.uniq.inspect end end |
#resolve_preferences ⇒ Object
35 36 37 38 39 |
# File 'lib/rails_wizard/template.rb', line 35 def resolve_preferences @resolve_preferences ||= begin @prefs.inspect end end |
#resolve_recipes ⇒ Object
Sort the recipes list taking ‘run_after’ directives into account.
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
# 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 |