Method: Thor::Actions#apply

Defined in:
lib/thor/actions.rb

#apply(path, config = {}) ⇒ Object

Loads an external file and execute it in the instance binding.

Parameters

path<String>

The path to the file to execute. Can be a web address or a relative path from the source root.

Examples

apply "http://gist.github.com/103208"

apply "recipes/jquery.rb"
[View source]

216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
# File 'lib/thor/actions.rb', line 216

def apply(path, config = {})
  verbose = config.fetch(:verbose, true)
  is_uri  = path =~ %r{^https?\://}
  path    = find_in_source_paths(path) unless is_uri

  say_status :apply, path, verbose
  shell.padding += 1 if verbose

  contents = if is_uri
    require "open-uri"
    URI.open(path, "Accept" => "application/x-thor-template", &:read)
  else
    File.open(path, &:read)
  end

  instance_eval(contents, path)
  shell.padding -= 1 if verbose
end