module Scope
Used for containing all methods defined in a bakefile.
Definitions
def self.load(file_path, path = [])
Load the specified file into a unique scope module, which can then be included into a class Bake::Base
instance.
Implementation
def self.load(file_path, path = [])
scope = Module.new
if scope.respond_to?(:set_temporary_name)
scope.set_temporary_name("#{self.name}[#{file_path}]")
end
scope.extend(self)
scope.const_set(:FILE_PATH, file_path)
scope.const_set(:PATH, path)
# yield scope if block_given?
scope.module_eval(File.read(file_path), file_path)
return scope
end
def recipes
Recipes defined in this scope.
Signature
-
yields
{|recipe| ...}
-
parameter
recipe
Recipe
-
parameter
-
returns
Enumerable
Implementation
def recipes
return to_enum(:recipes) unless block_given?
names = self.instance_methods
names.each do |name|
yield recipe_for(name)
end
end
def file_path
The path of the file that was used to Bake::Scope.load
this scope.
Implementation
def file_path
pp file_path_self: self
self.const_get(:FILE_PATH)
end
def path
The path of the scope, relative to the root of the context.
Implementation
def path
self.const_get(:PATH)
end
def recipe_for(name)
Look up a recipe with a specific name.
Signature
-
parameter
name
String
The instance method to look up.
Implementation
def recipe_for(name)
Recipe.new(self, name, self.instance_method(name))
end