class RailsWizard::Config

Constants

QUESTION_TYPES

Attributes

defaults[R]
questions[R]

Public Class Methods

new(schema, defaults=nil) click to toggle source
# File lib/rails_wizard/config.rb, line 7
def initialize(schema, defaults=nil)
  @questions = ActiveSupport::OrderedHash.new
  @defaults = defaults
  schema.each do |hash|
    key = hash.keys.first
    details = hash.values.first

    kind = details['type']
    raise ArgumentError, "Unrecognized question type, must be one of #{QUESTION_TYPES.keys.join(', ')}" unless QUESTION_TYPES.keys.include?(kind)
    @questions[key] = QUESTION_TYPES[kind].new(details)
  end
end

Public Instance Methods

compile(values = {}) click to toggle source
# File lib/rails_wizard/config.rb, line 20
def compile(values = {})
  result = []
  values.merge!(defaults) if defaults
  result << "config = #{values.inspect}"
  @questions.each_pair do |key, question|
    result << "config['#{key}'] = #{question.compile} unless config.key?('#{key}') || prefs.has_key?(:#{key})"
  end
  result.join("\n")
end