Skip to content

conradwt/cassandra-example-using-ruby

Repository files navigation

Cassandra Example Using Ruby

The purpose of this step-by-step tutorial is to provide a very simple example of configuring and using the Cassandra 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 'cassandra')
  • 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-cassandra:
        image: cassandra:4.1.3
        container_name: some-cassandra
        environment:
          - CASSANDRA_CLUSTER_NAME=cassandra-cluster
        ports:
          - 9042:9042
        volumes:
          - cassandra-data:/var/lib/cassandra
    
    volumes:
      cassandra-data: {}
  4. Start a single node cluster

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

    docker-compose exec some-cassandra 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 Cassandra configuration file

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

    rails cequel:keyspace:create
  13. Synchronize your Rails model schemas with Cassandra 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 cassandra-example-using-rails project here:

Contact

Follow Conrad Taylor on Twitter (@conradwt)

Creator

License

This repository is released under the MIT License.

Copyright

© Copyright 2014 - 2023 Conrad Taylor. All Rights Reserved.

About

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

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published