Class: ActionView::FileSystemResolver
- Inherits:
-
PathResolver
- Object
- Resolver
- PathResolver
- ActionView::FileSystemResolver
- Defined in:
- actionview/lib/action_view/template/resolver.rb
Overview
A resolver that loads files from the filesystem. It allows setting your own resolving pattern. Such pattern can be a glob string supported by some variables.
Examples
Default pattern, loads views the same way as previous versions of rails, eg. when you’re looking for ‘users/new` it will produce query glob: `users/new{en,}{html,js,}{erb,haml,}`
FileSystemResolver.new("/path/to/views", ":prefix/:action{.:locale,}{.:formats,}{.:handlers,}")
This one allows you to keep files with different formats in separate subdirectories, eg. ‘users/new.html` will be loaded from `users/html/new.erb` or `users/new.html.erb`, `users/new.js` from `users/js/new.erb` or `users/new.js.erb`, etc.
FileSystemResolver.new("/path/to/views", ":prefix/{:formats/,}:action{.:locale,}{.:formats,}{.:handlers,}")
If you don’t specify a pattern then the default will be used.
In order to use any of the customized resolvers above in a Rails application, you just need to configure ActionController::Base.view_paths in an initializer, for example:
ActionController::Base.view_paths = FileSystemResolver.new(
Rails.root.join("app/views"),
":prefix{/:locale}/:action{.:formats,}{.:handlers,}"
)
Pattern format and variables
Pattern has to be a valid glob string, and it allows you to use the following variables:
-
:prefix
- usually the controller path -
:action
- name of the action -
:locale
- possible locale versions -
:formats
- possible request formats (for example html, json, xml…) -
:handlers
- possible handlers (for example erb, haml, builder…)
Direct Known Subclasses
Constant Summary
Constants inherited from PathResolver
PathResolver::DEFAULT_PATTERN, PathResolver::EXTENSIONS
Instance Method Summary collapse
- #eql?(resolver) ⇒ Boolean (also: #==)
-
#initialize(path, pattern = nil) ⇒ FileSystemResolver
constructor
A new instance of FileSystemResolver.
- #to_s ⇒ Object (also: #to_path)
Methods inherited from Resolver
Constructor Details
#initialize(path, pattern = nil) ⇒ FileSystemResolver
Returns a new instance of FileSystemResolver.
286 287 288 289 290 |
# File 'actionview/lib/action_view/template/resolver.rb', line 286 def initialize(path, pattern=nil) raise ArgumentError, "path already is a Resolver class" if path.is_a?(Resolver) super(pattern) @path = File.(path) end |
Instance Method Details
#eql?(resolver) ⇒ Boolean Also known as: ==
297 298 299 |
# File 'actionview/lib/action_view/template/resolver.rb', line 297 def eql?(resolver) self.class.equal?(resolver.class) && to_path == resolver.to_path end |
#to_s ⇒ Object Also known as: to_path
292 293 294 |
# File 'actionview/lib/action_view/template/resolver.rb', line 292 def to_s @path.to_s end |