Method: Thor::Actions#template
- Defined in:
- lib/thor/actions/file_manipulation.rb
#template(source, *args, &block) ⇒ Object
Gets an ERB template at the relative source, executes it and makes a copy at the relative destination. If the destination is not given it’s assumed to be equal to the source removing .tt from the filename.
Parameters
- source<String>
-
the relative path to the source root.
- destination<String>
-
the relative path to the destination root.
- config<Hash>
-
give :verbose => false to not log the status.
Examples
template "README", "doc/README"
template "doc/README"
117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/thor/actions/file_manipulation.rb', line 117 def template(source, *args, &block) config = args.last.is_a?(Hash) ? args.pop : {} destination = args.first || source.sub(/#{TEMPLATE_EXTNAME}$/, "") source = File.(find_in_source_paths(source.to_s)) context = config.delete(:context) || instance_eval("binding") create_file destination, nil, config do capturable_erb = CapturableERB.new(::File.binread(source), trim_mode: "-", eoutvar: "@output_buffer") content = capturable_erb.tap do |erb| erb.filename = source end.result(context) content = yield(content) if block content end end |