Skip to content

keithpitt/graphql-ruby

 
 

Repository files navigation

graphql graphql-ruby

Build Status Gem Version Code Climate Test Coverage built with love

Installation

Install from RubyGems by adding it to your Gemfile, then bundling.

# Gemfile
gem 'graphql'
$ bundle install

Overview

Declare types & build a schema

# Declare a type...
PostType = GraphQL::ObjectType.define do
  name "Post"
  description "A blog post"

  field :id, !types.ID
  field :title, !types.String
  field :body, !types.String
  field :comments, types[!CommentType]
end

# ...and a query root
QueryType = GraphQL::ObjectType.define do
  name "Query"
  description "The query root of this schema"

  field :post do
    argument :id, !types.ID
    resolve -> (obj, args, ctx) { Post.find(args["id"]) }
  end
end

# Then create your schema
Schema = GraphQL::Schema.new(query: QueryType)

See also:

Execute queries

Execute GraphQL queries on a given schema, from a query string.

query = GraphQL::Query.new(Schema, query_string)
result_hash = query.result
# {
#   "data" => {
#     "post" => {
#        "id" => 1,
#        "title" => "GraphQL is nice"
#     }
#   }
# }

See also:

To Do

  • To match spec:
  • Field merging
  • Code clean-up
    • Unify unwrapping types (It's on TypeKind but it's still not right)
    • Accept native Ruby types in definitions, then convert them to GraphQL types
    • Make Schema validations run before TypeReducer
    • Remove deprecated params: keyword
  • Cook up some path other than "n+1s everywhere"

Goals

  • Implement the GraphQL spec & support a Relay front end
  • Provide idiomatic, plain-Ruby API with similarities to reference implementation where possible
  • Support graphql-rails

Getting Involved

  • Say hi & ask questions in the #ruby channel on Slack or on Twitter!
  • Report bugs by posting a description, full stack trace, and all relevant code in a GitHub issue.
  • Features & patches are welcome! Consider discussing it in an issue or in the #ruby channel on Slack to make sure we're on the same page.
  • Run the tests with rake test or start up guard with bundle exec guard.

Other Resources

P.S.

Thanks to @sgwilym for the great logo! Definition API heavily inspired by @seanchas's implementation of GraphQL

About

Ruby implementation of Facebook's GraphQL

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Ruby 100.0%