Skip to content

crate/crate_ruby

Repository files navigation

CrateDB Ruby Client

Build Status Gem Version Total downloads

A Ruby client library for the CrateDB HTTP interface.

  • Query execution support.
  • DDL command and schema introspection shortcuts.
  • Support for BLOB tables.
  • Foundation for the activerecord-crate-adapter.

Prerequisites

You will need Ruby 2.0 or greater.

Installation

The CrateDB Ruby client is available on RubyGems.org, see crate_ruby on RubyGems.org.

To use it, add this line to your application's Gemfile:

gem 'crate_ruby'

Or install it manually:

gem install crate_ruby

Synopsis

Set up the client.

require 'crate_ruby'

client = CrateRuby::Client.new()

Execute SQL queries.

result = client.execute("SELECT * FROM posts")
 => #<CrateRuby::ResultSet:0x00000002a9c5e8 @rowcount=1, @duration=5>

result.each do |row|
  puts row.inspect
end
 => [1, "test", 5]

result.cols
 => ["id", "my_column", "my_integer_col"]

Perform parameter substitution.

client.execute(
    "INSERT INTO posts (id, title, tags) VALUES (\$1, \$2, \$3)",
    [1, "My life with crate", ['awesome', 'cool']])

Manipulate BLOBs.

require 'digest'

digest = Digest::SHA1.file(file_path).hexdigest

# upload
f = File.read(file_path)
client.blob_put(table_name, digest, f)

# download
data = client.blob_get(table_name, digest)
open(file_path, "wb") do |file|
  file.write(data)
end

# deletion
client.blob_delete(table_name, digest)

A default schema can be set by passing in the schema name.

CrateRuby::Client.new(['localhost:4200'], schema: 'my_schema')

Authentication credentials can be passed to the client if needed.

CrateRuby::Client.new(['localhost:4200'], username: 'foo', password: 'supersecret')

SSL can be enabled.

CrateRuby::Client.new(['localhost:4200'], ssl: true)

Notes

See also CrateDB examples for Ruby for a basic example program, which exercises both the crate_ruby driver, as well as Ruby's canonical pg driver.

Contributing

This project is primarily maintained by Crate.IO GmbH, but we welcome community contributions!

See the developer docs and the contribution docs for more information.

Help

Looking for more help?