# Connect with Ruby

SingleStore is wire-compliant with MySQL. To connect to your database with Ruby, you can use:

* Standard Ruby
* Ruby on Rails

## Connect with Standard Ruby

For a complete example, including samples of CRUD operations, refer to [Getting started with SingleStore and Ruby](https://github.com/singlestore-labs/start-with-singlestore-ruby) GitHub repository.

## Prerequisites

* [Ruby](https://www.ruby-lang.org/en/downloads/) (version 2.6.x or 3.x)
* `mysql2` gem

## Connection Details

To connect your Ruby application to your cluster, you'll need the following:

* **Host**: Endpoint or IP Address of your SingleStore cluster.
* **Port**: Default is `3306`
* **User**: Username of the SingleStore database user with which to connect.
* **Password**: Password for the SingleStore database user .
* **Database**: Name of the SingleStore database to connect with.

Here is an example of a Ruby connection for a SingleStore cluster:

```ruby
client = Mysql2::Client.new(
        :host => "localhost", 
        :username => "root", 
        :password => "<root password>", 
        :database => "test"
        )
```

For more examples, refer to [Getting started with SingleStore stored procedures and Ruby](https://github.com/singlestore-labs/start-with-singlestore-ruby-stored-procedure).

## Connect with Ruby on Rails

To connect with Ruby on Rails, configure your SingleStore.

Open `config/database.yml` and edit the development adapter to use SingleStore. You will need to have the SingleStore socket which can be found using the query `SHOW VARIABLES LIKE 'socket'`. For example:

```shell
singlestore -u 's2user' -p -h 'svchost-xxxx' -P 3306 -e "SHOW VARIABLES LIKE 'socket'"

```

```output

+---------------+---------------------------------------+
| Variable_name | Value                                 |
+---------------+---------------------------------------+
| socket        | /var/lib/memsql/xxxx/data/memsql.sock |
+---------------+---------------------------------------+
```

SingleStore can run queries using the `mysql2` connector in controller code. Calling execute returns a `mysql2` result, which can be converted to an array and easily displayed:

```ruby
class WelcomeController < ApplicationController
  def index
    render plain: ActiveRecord::Base.connection.execute('show databases').to_a.join(' ')
  end
end
```

***

Modified at: December 14, 2022

Source: [/db/v9.1/developer-resources/connect-with-application-development-tools/connect-with-ruby/](https://docs.singlestore.com/db/v9.1/developer-resources/connect-with-application-development-tools/connect-with-ruby/)

(An index of the documentation is available at /llms.txt)
