{"action":"published","release":{"url":"https://api.github.com/repos/foca/granola/releases/1051531","assets_url":"https://api.github.com/repos/foca/granola/releases/1051531/assets","upload_url":"https://uploads.github.com/repos/foca/granola/releases/1051531/assets{?name}","html_url":"https://github.com/foca/granola/releases/tag/v0.9.0","id":1051531,"tag_name":"v0.9.0","target_commitish":"38889e60c1f9cabf864d57531e653a744cf5e454","name":"AKA Almost 1.0","draft":false,"author":{"login":"foca","id":437,"avatar_url":"https://avatars.githubusercontent.com/u/437?v=3","gravatar_id":"","url":"https://api.github.com/users/foca","html_url":"https://github.com/foca","followers_url":"https://api.github.com/users/foca/followers","following_url":"https://api.github.com/users/foca/following{/other_user}","gists_url":"https://api.github.com/users/foca/gists{/gist_id}","starred_url":"https://api.github.com/users/foca/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/foca/subscriptions","organizations_url":"https://api.github.com/users/foca/orgs","repos_url":"https://api.github.com/users/foca/repos","events_url":"https://api.github.com/users/foca/events{/privacy}","received_events_url":"https://api.github.com/users/foca/received_events","type":"User","site_admin":false},"prerelease":false,"created_at":"2015-03-15T07:34:42Z","published_at":"2015-03-15T08:08:02Z","assets":[],"tarball_url":"https://api.github.com/repos/foca/granola/tarball/v0.9.0","zipball_url":"https://api.github.com/repos/foca/granola/zipball/v0.9.0","body":"This marks the last general release before we release `1.0` :tada: :tada: :tada:\r\n\r\nThe API should be considered stable and public. Basically, it shouldn't change after this release. The notable changes are:\r\n\r\n### These changes are backwards-incompatible :boom:\r\n\r\n* `Serializer#attributes` was renamed to `Serializer#serialized`. [See commit](https://github.com/foca/granola/commit/562d85c5ab8ff2f07eaf72badbbaf45305f9d14d).\r\n\r\n* The [rack helper](https://github.com/foca/granola/tree/v0.9.0#rack-helpers) is now called `#granola`. So in Cuba you'd do: `halt granola(current_user, with: SessionSerializer)`, for example. Thanks @djanowski for the idea :blue_heart: [See commit](https://github.com/foca/granola/commit/47dadee65e7d6d829b73a5b7280712aa421370f2).\r\n\r\n* `Granola::Rack` no longer cares about checking freshness of a response. Instead, it makes the body defer to the call to each before actually calling `#to_json`. This means that you can put [Rack::ConditionalGet](http://www.rubydoc.info/github/rack/rack/Rack/ConditionalGet) in the middleware stack and use that to make the response `304` to clients. [See commit](https://github.com/foca/granola/commit/8888a653e6c779e8e2842f8076b87306a57b8b54).\r\n\r\n### These are backwards-compatible :ok_hand: \r\n\r\n* Allow passing default headers to the [rack helper](https://github.com/foca/granola/tree/v0.9.0#rack-helpers). Thank @lucasefe for this one :purple_heart:. [See commit](https://github.com/foca/granola/commit/e105f0bfc651f601cd4b3d1f49c3dbfd4dbe243c).\r\n\r\n* Don't hate so much on [MultiJson](https://github.com/intridea/multi_json) :heart: As @luislavena put it, the performance problems alluded to in [v0.0.4](https://github.com/foca/granola/releases/tag/v0.0.4) have been fixed. We still default to our own way of configuring the JSON backend, but if MultiJson is available then we use that. [See commit](https://github.com/foca/granola/commit/ac20b058fd555c25a0b62c92017bddcd212410fe).\r\n\r\n* Open the road for multiple formats (such as serializing to YAML or MsgPack right from Granola). The [rack helper](https://github.com/foca/granola/tree/v0.9.0#rack-helpers) now includes an `as:` keyword that specifies the format to render (defaults to `:json`). As long as you define `Serializer::MIME_TYPES[format]` and a `#to_#{format}` method in your serializers, then you can just `granola(object, as: <format>)`. [See commit](https://github.com/foca/granola/commit/84b3796ed6d4fd1167d59f9dcb0b9a1778ad84b8)\r\n\r\n---\r\n\r\nThanks to everyone who offered suggestions and feedback for making this possible. **I :heartpulse: you.**\r\n"}}