An open API service indexing awesome lists of open source software.

https://github.com/avinashbot/lazy_lazer

create custom lightweight lazily loaded data models using a simple dsl
https://github.com/avinashbot/lazy_lazer

lazy-loading model ruby

Last synced: 16 days ago
JSON representation

create custom lightweight lazily loaded data models using a simple dsl

Awesome Lists containing this project

README

        



```ruby
require 'lazy_lazer'

class User
include LazyLazer

property :name, :required
property :email, default: '[email protected]'
property :created_at, from: :creation_time_utc, with: ->(t) { Time.at(t) }
property :age, with: :to_i
property :twitter_handle, :nil
property :favorite_ice_cream

def say_flavor!
if exists_locally?(:favorite_ice_cream)
puts "#{name} currently likes #{favorite_ice_cream}."
else
puts "#{name} doesn't have a favorite ice cream flavor yet."
end
end

def try_another_flavor!
delete_attribute(:favorite_ice_cream)
not_fully_loaded!
puts "#{name} just tried #{favorite_ice_cream}. They love it!"
end

private

def lazer_reload
fully_loaded! # mark model as fully updated
{ favorite_ice_cream: %w[vanilla strawberry chocolate].sample }
end
end

user = User.new(name: 'Blinky', creation_time_utc: 1500000000, age: '21')

user.name #=> "Blinky"
user.email #=> "[email protected]"
user.created_at #=> 2017-07-14 03:40:00 +0100
user.age #=> 21
user.twitter_handle #=> nil

user.favorite_ice_cream #=> "chocolate"
user.favorite_ice_cream #=> "chocolate"
user.reload.favorite_ice_cream #=> "vanilla"

user.say_flavor! #=> Blinky currently likes vanilla.
user.try_another_flavor! #=> Blinky just tried strawberry. They love it!
```


documentation -
contributing -
mit licensed


created for redd -
logo font is zaguatica