def create_interactively opts={}
o = self.new
generator_args = opts[:args] || []
@fields.each do |name, field_opts|
val = if opts[:with] && opts[:with][name]
opts[:with][name]
elsif(found, x = generate_field_value(o, field_opts, generator_args)) && found
x
else
q = field_opts[:prompt] || name.to_s.capitalize
if field_opts[:multiline]
ask_multiline q
else
default = if opts[:defaults_from] && opts[:defaults_from].respond_to?(name) && (x = opts[:defaults_from].send(name))
x
else
default = generate_field_default o, field_opts, generator_args
end
ask q, :default => default
end
end
o.send "#{name}=", val
end
o
end