Official Ruby SDK for GetStream's activity feeds and chat APIs.
Add this line to your application's Gemfile:
gem 'getstream-ruby'And then execute:
$ bundle installOr install it yourself as:
$ gem install getstream-rubyrequire 'getstream_ruby' client = GetStreamRuby.manual( api_key: "your_api_key", api_secret: "your_api_secret", )Create a .env file in your project root:
# Copy the example file cp env.example .env # Edit .env with your actual credentials STREAM_API_KEY=your_api_key STREAM_API_SECRET=your_api_secretrequire 'getstream_ruby' # Uses .env file automatically client = GetStreamRuby.env # or client = GetStreamRuby.client # defaults to .envexport STREAM_API_KEY=your_api_key export STREAM_API_SECRET=your_api_secretrequire 'getstream_ruby' client = GetStreamRuby.env_vars# Create a client instance client = GetStreamRuby.client # Or create with custom configuration client = GetStreamRuby::Client.new(config)# Create a user feed feed_response = client.feed.create("user", "123", { name: "John Doe", email: "john@example.com" })# Add an activity activity_response = client.feed.add_activity("user", "123", { actor: "user:123", verb: "post", object: "post:456", message: "Hello, world!", published: Time.now.iso8601 })# Get activities from a feed activities = client.feed.get_activities("user", "123", { limit: 10, offset: 0 })# Follow another user follow_response = client.feed.follow("user:123", "user:456", { activity_copy_limit: 5 }) # Unfollow a user unfollow_response = client.feed.unfollow("user:123", "user:456")The SDK provides specific error classes for different types of errors:
begin client.feed.create("user", "123") rescue GetStreamRuby::AuthenticationError => e puts "Authentication failed: #{e.message}" rescue GetStreamRuby::ValidationError => e puts "Validation error: #{e.message}" rescue GetStreamRuby::APIError => e puts "API error: #{e.message}" end# Clone the repository git clone https://github.com/getstream/getstream-ruby.git cd getstream-ruby # Setup development environment make dev-setup # Run all checks make dev-checkgetstream_ruby/ ├── lib/getstream_ruby/ # Main SDK code ├── spec/ # Test files │ ├── integration/ # Integration tests │ └── *.rb # Unit tests ├── .github/workflows/ # CI/CD workflows ├── .rubocop.yml # Code style configuration ├── .env.example # Environment template ├── Makefile # Development commands ├── Rakefile # Ruby task runner └── Gemfile # Dependencies This project includes a simple Makefile with essential commands:
make install # Install dependencies make setup # Setup development environment make dev-setup # Complete development setupmake test # Run unit tests only make test-integration # Run integration tests only make test-all # Run all tests (unit + integration)make format # Auto-format code with RuboCop make format-check # Check formatting (CI-friendly) make lint # Run RuboCop linter make security # Run security audit make dev-check # Run all development checksmake clean # Clean up generated files make console # Start IRB console with SDK loaded make version # Show current version make help # Show all available commands-
Copy environment template:
cp .env.example .env
-
Edit
.envwith your GetStream credentials:STREAM_API_KEY=your_api_key STREAM_API_SECRET=your_api_secret
-
Run tests:
make test-all
This project supports Ruby 2.6+ and uses the default bundler version for simplicity.
Requirements:
- Ruby 2.6.0+ (see
.ruby-version) - Bundler (latest compatible version)
This project uses RuboCop for code style enforcement. The configuration is in .rubocop.yml.
- Auto-fix issues:
make format-fix - Check style:
make format-check - View all issues:
make lint
The project includes several development tools configured and ready to use:
- RuboCop - Code style and quality enforcement
- RSpec - Testing framework
- SimpleCov - Code coverage reporting
- YARD - Documentation generation
- Bundler Audit - Security vulnerability scanning
- WebMock - HTTP request mocking (disabled for integration tests)
Run make help to see all available commands, or check the sections above for categorized commands.
Integration tests require valid GetStream API credentials. They test real API interactions:
# Run integration tests (requires .env file) make test-integration # Run specific integration test bundle exec rspec spec/integration/feed_integration_spec.rb bundle exec rspec spec/integration/moderation_integration_spec.rbThe project includes simple GitHub Actions workflows:
-
CI Pipeline: Runs on every push and pull request
- Unit tests
- Code formatting checks
- Security audit
- Integration tests (on master/main branches only)
-
Release Pipeline: Manual releases via git tags
- Create a tag:
git tag v1.0.0 && git push origin v1.0.0 - Automated gem build and release
- Create a tag:
To enable integration tests in CI, configure these GitHub repository settings:
-
Create a "ci" environment:
- Go to Settings → Environments
- Click "New environment"
- Name it "ci"
-
Configure environment variables:
- In the "ci" environment, go to Environment variables
- Add:
STREAM_API_KEY= your GetStream API key
-
Configure environment secrets:
- In the "ci" environment, go to Environment secrets
- Add:
STREAM_API_SECRET= your GetStream API secret
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes
- Run tests:
make dev-check - Commit with conventional messages:
git commit -m "feat: add new feature" - Push and create a pull request
Commit Message Format:
feat:- New featuresfix:- Bug fixesdocs:- Documentation changesstyle:- Code style changesrefactor:- Code refactoringtest:- Test changeschore:- Maintenance tasks
Bug reports and pull requests are welcome on GitHub at https://github.com/getstream/getstream-ruby.
The gem is available as open source under the terms of the MIT License.