Class: Stasis::Controller
Instance Attribute Summary
Attributes inherited from Scope
Instance Method Summary collapse
- #_add(path) ⇒ Object
-
#_resolve(path, force = false) ⇒ Object
Accepts three kinds of paths as the
pathparameter:. -
#initialize(stasis) ⇒ Controller
constructor
A new instance of Controller.
Methods inherited from Scope
#_bind_plugin, #_each_plugin_method, #_each_plugins_method, #_send_to_plugin
Constructor Details
#initialize(stasis) ⇒ Controller
Returns a new instance of Controller.
10 11 12 13 14 15 16 17 18 |
# File 'lib/stasis/scope/controller.rb', line 10 def initialize(stasis) @_stasis = stasis # Some plugins define methods to be made available to controller scopes. This call # binds those methods. @_stasis.plugins.each do |plugin| _bind_plugin(plugin, :controller_method) end end |
Instance Method Details
#_add(path) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/stasis/scope/controller.rb', line 20 def _add(path) return unless File.file?(path) && File.basename(path) == 'controller.rb' # Temporarily set path variables. @_stasis.path = path # Change current working directory. Dir.chdir(File.dirname(path)) # Evaluate `controller.rb`. instance_eval(File.read(path), path) # Unset temporary path variables. @_stasis.path = nil end |
#_resolve(path, force = false) ⇒ Object
Accepts three kinds of paths as the path parameter:
-
Absolute:
/project/path/view.haml -
Relative:
view.haml -
Root:
/path/view.haml
Returns an absolute path.
Set the force parameter to true to return the resolved path even if no file exists at that location.
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/stasis/scope/controller.rb', line 46 def _resolve(path, force=false) if path.nil? nil elsif path.is_a?(Regexp) path # If the path is relative... elsif path[0..0] != '/' && @_stasis.path && (File.file?(p = File.("#{File.dirname(@_stasis.path)}/#{path}")) || force) p # If the path is root... elsif File.file?(p = File.("#{@_stasis.root}/#{path}")) || force p # If the path is absolute... elsif File.file?(path) path else false end end |