Skip to content

conradwt/scylla-example-using-ruby

Repository files navigation

Scylla Example Using Ruby

The purpose of this step by step tutorial is to provide a very simple example of configuring and using Scylla database engine with the Ruby Language.

Requirements

  • Docker Desktop 4.23.0 or newer

  • Rails >= 5.2.8.1 and < 6

  • Ruby >= 2.7.8 and < 3

Note: This tutorial was updated on macOS 13.5.2.

Communication

  • If you need help, use Stack Overflow. (Tag 'scylla')
  • If you'd like to ask a general question, use Stack Overflow.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Installation, Setup, and Usage

  1. Open new terminal window

  2. Create the project directory

    mkdir blog
    cd blog
  3. Create docker-compose.yml file with the following content:

    services:
      some-scylla:
        image: scylladb/scylla:5.2.8
        container_name: some-scylla
        ports:
          - '9042:9042'
        volumes:
          - scylla-data:/var/lib/scylla
    
    volumes:
      scylla-data: {}
  4. Start a single node cluster

    docker-compose up -d
  5. Check the status of your cluster

    docker-compose exec some-scylla nodetool status

    Note: One should see that the node status as Up Normal (UN) that looks similar to the following:

    Datacenter: datacenter1
    =======================
    Status=Up/Down
    |/ State=Normal/Leaving/Joining/Moving
    --  Address     Load       Tokens       Owns    Host ID                               Rack
    UN  172.19.0.2  582.5 KB   256          ?       e61cf276-c860-4990-bf03-37161414aed2  rack1
    
    Note: Non-system keyspaces don't have the same replication settings, effective ownership information is meaningless
    
  6. Generate a new Rails application

    gem install rails -v '5.2.8.1'
    rails _5.2.8.1_ new . --skip-active-record --skip-active-storage -T --skip-bundle --skip-webpack-install --skip-javascript --no-rc
  7. Add the Ruby cequel gem

    bundle add i18n --version "= 1.8.11"
    bundle add cequel
    bundle add activemodel-serializers-xml
  8. Generate scaffold of the application

    rails g scaffold post title body
  9. Add the following as the first route within config/routes.rb file:

    root 'posts#index'
  10. Create app/models/post.rb file with the following content:

    class Post
      include Cequel::Record
    
      key :id, :timeuuid, auto: true
      column :title, :text
      column :body, :text
    
      timestamps
    end
  11. Create a default configuration file

    rails g cequel:configuration
  12. Initialize keyspace (.i.e. database)

    rails cequel:keyspace:create
  13. Synchronize your Rails model schemas with the keyspace

    rails cequel:migrate
  14. Start the Rails server

    rails s
    
  15. Play with the application

    open http://localhost:3000
  16. Remove the keyspace

    rails cequel:keyspace:drop
  17. Stop a single node cluster

    docker-compose down

References

Support

Bug reports and feature requests can be filed for the scylla-example-using-ruby project here:

Contact

Follow Conrad Taylor on Twitter (@conradwt)

Creator

License

This repository is released under the MIT License.

Copyright

Copyright © 2020 - 2023 Conrad Taylor. All rights reserved.