GET /syllabi/1 Using wrapper objects
{
"type": "syllabus",
"properties": {
"id": 1,
"title": "Build a Simple Website",
"description": "Smells Like Bakin",| require 'rack' | |
| module Rack | |
| class ApiVersion | |
| def initialize(app, options = {}) | |
| @app = app | |
| @options = options | |
| end | |
| def call(env) |
GET /syllabi/1 Using wrapper objects
{
"type": "syllabus",
"properties": {
"id": 1,
"title": "Build a Simple Website",
"description": "Smells Like Bakin",| require "ostruct" | |
| # A base Service Object module. | |
| # | |
| # Example usage: | |
| # | |
| # class DoSomething | |
| # include Service | |
| # def call | |
| # puts context.foo |
Cache Marks
An introduction of the pattern of using cache “marks” for use in building cache keys and indicating resource state uniqueness.
A cache mark is a simple value that represents a unique state of a resource or group of resources as a whole or in a particular context. A commonly used (but not referred to as) cache mark is a resource’s updated_at timestamp. It is updated to the current time when a resource is updated allowing for cache keys that use that mark to automatically invalidate caches based on previous versions of that resource’s mark. In the case of a group of resources a mark may be used to invalidate keys whenever any member of the collection is modified or removed.
Cache marks must be stored separately from the resource itself when:
| require 'redis' | |
| # This example creates a master-slave setup with a sentinel, then connects to | |
| # it and sends write commands in a loop. | |
| # | |
| # After 30 seconds, the master dies. You will be able to see how a new master | |
| # is elected and things continue to work as if nothing happened. | |
| # | |
| # To run this example: | |
| # |
| Rpush::Client::Redis::Apns::Feedback.all.each do |feedback| | |
| if Device.exists?(feedback.device_token) | |
| puts "Device exists: #{feedback.device_token}" | |
| else | |
| feedback.destroy | |
| end | |
| end |
| <?xml version="1.0" encoding="UTF-8"?> | |
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | |
| <plist version="1.0"> | |
| <array> | |
| <dict> | |
| <key>phrase</key> | |
| <string>👎</string> | |
| <key>shortcut</key> | |
| <string>:-1:</string> | |
| </dict> |