Module: ZeroRuby

Defined in:
lib/zero_ruby.rb,
lib/zero_ruby/types.rb,
lib/zero_ruby/errors.rb,
lib/zero_ruby/schema.rb,
lib/zero_ruby/version.rb,
lib/zero_ruby/mutation.rb,
lib/zero_ruby/lmid_store.rb,
lib/zero_ruby/type_names.rb,
lib/zero_ruby/zero_client.rb,
lib/zero_ruby/input_object.rb,
lib/zero_ruby/configuration.rb,
lib/zero_ruby/push_processor.rb,
lib/zero_ruby/error_formatter.rb,
lib/zero_ruby/typescript_generator.rb,
lib/zero_ruby/lmid_stores/active_record_store.rb

Overview

ZeroRuby - A Ruby gem for handling Zero mutations with type safety

Examples:

Basic usage with InputObject

# Define an input type
class Types::PostInput < ZeroRuby::InputObject
  argument :id, ZeroRuby::Types::ID
  argument :title, ZeroRuby::Types::String.constrained(min_size: 1, max_size: 200)
  argument :body, ZeroRuby::Types::String.optional
end

# Define a mutation
class Mutations::PostCreate < ZeroRuby::Mutation
  argument :post_input, Types::PostInput
  argument :notify, ZeroRuby::Types::Boolean.default(false)

  def execute
    Post.create!(**args[:post_input])
    notify_subscribers if args[:notify]
  end
end

# Register in schema
class ZeroSchema < ZeroRuby::Schema
  mutation "posts.create", handler: Mutations::PostCreate
end

# Use in controller (Rails example)
class ZeroController < ApplicationController
  def push
    if request.get?
      render plain: ZeroSchema.to_typescript, content_type: "text/plain"
    else
      body = JSON.parse(request.body.read)
      result = ZeroSchema.execute(body, context: {current_user: current_user})
      render json: result
    end
  end
end

Defined Under Namespace

Modules: ErrorFormatter, LmidStores, TypeNames, Types Classes: CoercionError, Configuration, Error, InputObject, InternalError, LmidStore, Mutation, MutationAlreadyProcessedError, MutationNotFoundError, OutOfOrderMutationError, ParseError, PushProcessor, Schema, TransactNotCalledError, TransactionError, TypeScriptGenerator, UnsupportedPushVersionError, ValidationError, ZeroClient

Constant Summary collapse

VERSION =
"0.1.0.alpha6"

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.configurationObject



40
41
42
# File 'lib/zero_ruby/configuration.rb', line 40

def configuration
  @configuration ||= Configuration.new
end

Class Method Details

.configure {|configuration| ... } ⇒ Object

Yields:



44
45
46
# File 'lib/zero_ruby/configuration.rb', line 44

def configure
  yield(configuration)
end

.reset_configuration!Object



48
49
50
# File 'lib/zero_ruby/configuration.rb', line 48

def reset_configuration!
  @configuration = Configuration.new
end