Giter Club home page Giter Club logo

jsonapi-hanami's Introduction

jsonapi-hanami

Hanami integration for jsonapi-rb.

Status

Gem Version Build Status Gitter chat

Resources

Installation

Add the following to your application's Gemfile:

gem 'jsonapi-hanami'

And then execute:

$ bundle

Or install it manually as:

$ gem install jsonapi-hanami

Usage and documentation

See jsonapi-rb.org/guides.

License

jsonapi-hanami is released under the MIT License.

jsonapi-hanami's People

Contributors

beauby avatar dawidof avatar olleolleolle avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

jsonapi-hanami's Issues

Weird return using Sequel

Hi,
Returning data is quite weird:

[:data, [{:id=>"1", :type=>:channel, :attributes=>{:name=>"hi", :slug=>"hi"}}]]

Controller:

module ApiV2::Controllers::Channel
  class Index
    include ApiV2::Action
    include JSONAPI::Hanami::Action

    def call(params)
      self.data = Channel.all
      #self.include = [:author, comments: [:author]]
      #self.fields = { users: [:name, :email] }
      #self.status = 201
    end
  end
end

Error catcher

On errors an json should be returned instead of the default hanami error page

NameError: uninitialized constant JSONAPI::Serializable::Renderer

Up on trying to load a controller:

Boot Error

Something went wrong while loading /vagrant/config.ru

NameError: uninitialized constant JSONAPI::Serializable::Renderer Did you mean? JSONAPI::Renderer

/home/vagrant/.rvm/gems/ruby-2.4.1/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:28:in `_jsonapi_render_success'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:21:in `_jsonapi_render'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:12:in `block (2 levels) in included'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-utils-1.0.2/lib/hanami/utils/callbacks.rb:246:in `instance_exec'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-utils-1.0.2/lib/hanami/utils/callbacks.rb:246:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-utils-1.0.2/lib/hanami/utils/callbacks.rb:147:in `block in run'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-utils-1.0.2/lib/hanami/utils/callbacks.rb:146:in `each'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-utils-1.0.2/lib/hanami/utils/callbacks.rb:146:in `run'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/callbacks.rb:209:in `_run_after_callbacks'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/callbacks.rb:196:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/callable.rb:71:in `block in call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/throwable.rb:145:in `block in _rescue'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/throwable.rb:143:in `catch'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/throwable.rb:143:in `_rescue'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-controller-1.0.1/lib/hanami/action/callable.rb:67:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-router-1.0.1/lib/hanami/routing/endpoint.rb:101:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:193:in `process_destination_path'
(eval):21:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:288:in `raw_call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-router-1.0.1/lib/hanami/routing/http_router.rb:156:in `raw_call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:142:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-router-1.0.1/lib/hanami/router.rb:1019:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/builder.rb:153:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-1.0.0/lib/hanami/middleware.rb:52:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-1.0.0/lib/hanami/application.rb:169:in `call'
/home/vagrant/.rvm/rubies/ruby-2.4.1/lib/ruby/2.4.0/delegate.rb:83:in `method_missing'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:193:in `process_destination_path'
(eval):21:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:288:in `raw_call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-router-1.0.1/lib/hanami/routing/http_router.rb:156:in `raw_call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/http_router-0.11.2/lib/http_router.rb:142:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-router-1.0.1/lib/hanami/router.rb:1019:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/method_override.rb:22:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-1.0.0/lib/hanami/assets/static.rb:49:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/content_length.rb:15:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/common_logger.rb:33:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/builder.rb:153:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-1.0.0/lib/hanami/app.rb:42:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/shotgun-0.9.2/lib/shotgun/loader.rb:86:in `proceed_as_child'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/shotgun-0.9.2/lib/shotgun/loader.rb:31:in `call!'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/shotgun-0.9.2/lib/shotgun/loader.rb:18:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/hanami-1.0.0/lib/hanami/assets/static.rb:49:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/lint.rb:49:in `_call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/lint.rb:37:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/rack-2.0.3/lib/rack/show_exceptions.rb:23:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/puma-3.10.0/lib/puma/configuration.rb:225:in `call'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/puma-3.10.0/lib/puma/server.rb:605:in `handle_request'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/puma-3.10.0/lib/puma/server.rb:437:in `process_client'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/puma-3.10.0/lib/puma/server.rb:301:in `block in run'
/home/vagrant/.rvm/gems/ruby-2.4.1/gems/puma-3.10.0/lib/puma/thread_pool.rb:120:in `block in spawn_thread'

Undefined method `render` for class: `JSONAPI::Serializable::Render`

Trying to use with Hanami (1.1.0) and encountered the following error:

NoMethodError: undefined method render' for JSONAPI::Serializable::Renderer:Class /home/mihai/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:28:in _jsonapi_render_success'
/home/mihai/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:21:in _jsonapi_render' /home/mihai/.rbenv/versions/2.4.2/lib/ruby/gems/2.4.0/gems/jsonapi-hanami-0.1.2/lib/jsonapi/hanami/rendering.rb:12:in block (2 levels) in included'

Problem seems to be that JSONAPI::Serializable::Renderer#render is an instance method not a class one in https://github.com/jsonapi-rb/jsonapi-serializable/blob/cabf10e319a3ce8e52412d6f435fdca458ac2b56/lib/jsonapi/serializable/renderer.rb#L38 (also in master) and is used as a class method in

self.body = JSONAPI::Serializable::Renderer.render(@_jsonapi[:data],
(also in master).

Maybe an oversight in Renderer class, missing something like this:

def self.render(resources, options = {})
  self.new.render(resources, options)
end

Gems versions:
jsonapi-hanami: 0.1.2
jsonapi-renderer: 0.2.0
jsonapi-serializable: 0.3.0

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.