Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/alexander-senko/stub
Proxy objects with fallbacks
https://github.com/alexander-senko/stub
Last synced: 4 months ago
JSON representation
Proxy objects with fallbacks
- Host: GitHub
- URL: https://github.com/alexander-senko/stub
- Owner: Alexander-Senko
- License: mit
- Created: 2013-03-04T20:29:27.000Z (almost 12 years ago)
- Default Branch: master
- Last Pushed: 2013-03-26T12:00:47.000Z (almost 12 years ago)
- Last Synced: 2024-10-08T01:37:11.026Z (4 months ago)
- Language: Ruby
- Homepage:
- Size: 125 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
# Stub
Proxy objects with fallbacks.
Useful for creating stubs with partially defined objects.## Installation
Add this line to your application's Gemfile:
gem 'stub'
And then execute:
$ bundle
Or install it yourself as:
$ gem install stub
## Usage
Inherit `Stub::Abstract` (or `Stub::Template::Abstract`) and define `__stub__`
method:class MyStub < Stub::Abstract
module Methods
def __stub__ method_name, *args, &block
# Do something when method fails on the proxied object
# or returns nil.
end
end
endSee also `Stub::Template::Prototype` as a working example.
### `Stub::Template::Prototype`
Use a proxied object to generate placeholders in place of _absent_ attributes &
methods:render Stub::Template::Prototype.new(MyModel.new)
Later you can use this `render`ed template in Prototype's `new Template()` and
`evaluate` it with data from `MyModel.find`. Example (don't forget escaping in
real-life code):var template = '<%= render Stub::Template::Prototype.new(MyModel.new) %>';
var record = JSON.parse('<%= my_model.to_json %>');text = new Template(template).evaluate(record);
## Contributing
1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request