Class: LeanWeb::Route
- Inherits:
- 
      Object
      
        - Object
- LeanWeb::Route
 
- Defined in:
- lib/leanweb/route.rb
Overview
Instance Attribute Summary collapse
- 
  
    
      #action  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute action. 
- 
  
    
      #method  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute method. 
- 
  
    
      #path  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute path. 
- 
  
    
      #static  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    Returns the value of attribute static. 
Instance Method Summary collapse
- 
  
    
      #available?  ⇒ Boolean 
    
    
  
  
  
  
  
  
  
  
  
    Check if route is available. 
- 
  
    
      #build(request_path = @path)  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Build this route as an static file and place it relative to PUBLIC_PATH. 
- 
  
    
      #initialize(path:, method: 'GET', action: nil, static: nil)  ⇒ Route 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    A new instance of Route. 
- 
  
    
      #path_basename  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    Last identifier on a path, returns indexfor/.
- #respond(request) ⇒ Array
- 
  
    
      #seed_path(seed)  ⇒ String 
    
    
  
  
  
  
  
  
  
  
  
    On Regexp paths, return a string valid for making a request to this route. 
- 
  
    
      #str_path  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    String path, independent if #path is Regexp or String. 
Constructor Details
#initialize(path:, method: 'GET', action: nil, static: nil) ⇒ Route
A new instance of Route.
| 44 45 46 47 48 49 | # File 'lib/leanweb/route.rb', line 44 def initialize(path:, method: 'GET', action: nil, static: nil) @path = path @method = method self.action = action @static = static.nil? ? @method == 'GET' : static end | 
Instance Attribute Details
#action ⇒ Object
Returns the value of attribute action.
| 21 22 23 | # File 'lib/leanweb/route.rb', line 21 def action @action end | 
#method ⇒ Object (readonly)
Returns the value of attribute method.
| 21 22 23 | # File 'lib/leanweb/route.rb', line 21 def method @method end | 
#path ⇒ Object (readonly)
Returns the value of attribute path.
| 21 22 23 | # File 'lib/leanweb/route.rb', line 21 def path @path end | 
#static ⇒ Object (readonly)
Returns the value of attribute static.
| 21 22 23 | # File 'lib/leanweb/route.rb', line 21 def static @static end | 
Instance Method Details
#available? ⇒ Boolean
Check if route is available.
If on production environment (not development), should serve only
dynamic (not static) routes.
| 55 56 57 58 59 | # File 'lib/leanweb/route.rb', line 55 def available? return @static == false if ENV['RACK_ENV'] != 'development' true end | 
#build(request_path = @path) ⇒ Object
Build this route as an static file and place it relative to PUBLIC_PATH.
| 107 108 109 110 111 112 113 114 115 | # File 'lib/leanweb/route.rb', line 107 def build(request_path = @path) response = respond( Rack::Request.new(Rack::MockRequest.env_for(request_path)) ) out_path = output_path(request_path, response[1]['Content-Type'] || nil) FileUtils.mkdir_p(File.dirname(out_path)) File.write(out_path, response[2][0]) end | 
#path_basename ⇒ Object
Last identifier on a path, returns index for /.
| 62 63 64 | # File 'lib/leanweb/route.rb', line 62 def path_basename str_path[-1] == '/' ? 'index' : File.basename(str_path) end | 
#respond(request) ⇒ Array
| 71 72 73 74 75 76 77 78 79 80 | # File 'lib/leanweb/route.rb', line 71 def respond(request) return respond_proc(request) if @action.instance_of?(Proc) respond_method(request) rescue NoMethodError raise unless @static == true && (view_path = guess_view_path) controller = default_controller_class.new(self) controller.default_static_action(view_path) end | 
#seed_path(seed) ⇒ String
On Regexp paths, return a string valid for making a request to this route.
| 93 94 95 96 97 98 99 100 101 | # File 'lib/leanweb/route.rb', line 93 def seed_path(seed) sown_path = str_path if seed.instance_of?(Hash) seed.each{ |key, val| sown_path.sub!(/\(\?<#{key}>[^)]+\)/, val) } else seed.each{ |val| sown_path.sub!(/\([^)]+\)/, val) } end sown_path end | 
#str_path ⇒ Object
String path, independent if #path is Regexp or String.
| 83 84 85 86 87 | # File 'lib/leanweb/route.rb', line 83 def str_path @path.source.gsub(/[\^$]/, '') rescue NoMethodError @path end |