基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
Ruby on Rails 连接 OceanBase 数据库示例程序
更新时间:2026-04-09 14:12:04
功能适用性
Ruby on Rails 适用于 OceanBase 数据库 MySQL 模式。
Ruby on Rails 是一个使用 Ruby 语言开发的全栈 Web 应用框架,它内置了 ActiveRecord 作为其 ORM 组件。ActiveRecord 提供了以下特性:
- 基于约定的对象关系映射(ORM)
- 支持模型关联和继承
- 提供查询接口构建复杂的数据库查询
- 支持数据库迁移
- 内置验证和回调机制
本文将介绍如何使用 Ruby on Rails 的 ActiveRecord 连接 OceanBase 数据库,实现基本的数据库操作,包括创建表、插入数据、更新数据和查询数据等。
前提条件
- 您已安装 Ruby 3.2.1 或更高版本。
- 您已安装 Rails 6.0 或更高版本。
- 您已安装 OceanBase 数据库并且创建了 MySQL 模式租户。
- 您已获取 OceanBase 数据库连接串。
操作步骤
- 获取 OceanBase 数据库连接串。
- 安装 Ruby 和 Rails。
- 创建 Rails 应用并配置数据库连接。
- 创建模型并实现基本的 CRUD 操作。
- 运行程序并验证结果。
步骤一:获取 OceanBase 数据库连接串
联系 OceanBase 数据库部署人员或者管理员获取相应的数据库连接串。
obclient -h$host -P$port -u$user_name -p$password -D$database_name
参数说明:
$host:提供 OceanBase 数据库连接 IP。OceanBase 数据库代理(OceanBase Database Proxy,ODP)连接方式使用的是一个 ODP 地址;直连方式使用的是 OBServer 节点的 IP 地址。$port:提供 OceanBase 数据库连接端口。ODP 连接的方式默认是2883,在部署 ODP 时可自定义;直连方式默认是2881,在部署 OceanBase 数据库时可自定义。$database_name:需要访问的数据库名称。注意
连接租户的用户需要拥有该数据库的
CREATE、INSERT、UPDATE和SELECT权限。更多有关用户权限的信息,请参见 MySQL 模式下的权限分类。$user_name:提供租户的连接账户。ODP 连接的常用格式:用户名@租户名#集群名或者集群名:租户名:用户名;直连方式格式:用户名@租户名。$password:提供账户密码。
更多连接串的信息,请参见 通过 OBClient 连接 OceanBase 租户。
示例如下:
obclient -hxxx.xxx.xxx.xxx -P2881 -utest_user001@mysql001 -p****** -Dtest
步骤二:安装 Ruby 和 Rails
安装 Ruby 和 Rails:
# 安装依赖 apt install -y curl vim git build-essential libmysqlclient-dev libssl-dev # 安装 RVM curl -L https://raw.githubusercontent.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable # 载入 RVM 环境 source /usr/local/rvm/src/rvm/scripts/rvm # 修改 RVM 下载 Ruby 的源为 Ruby China 的镜像 echo "ruby_url=https://cache.ruby-china.com/pub/ruby" > /usr/local/rvm/src/rvm/config/db # 安装 RVM 依赖 rvm requirements # 创建必要的目录 mkdir -p /usr/local/rvm/src/rvm/rubies mkdir -p /usr/local/rvm/src/rvm/archives mkdir -p /usr/local/rvm/src/rvm/src/ruby-3.2.1 # 安装 Ruby 3.2.1 rvm install 3.2.1 rvm use 3.2.1 --default # 安装 Bundler 和 Rails gem install bundler gem install rails # 验证安装 rails -v # 安装 MySQL2 gem install mysql2 -v '0.5.6'创建新的 Rails 应用:
# 创建新的 Rails 应用,跳过测试框架 rails new oceanbase_rails --skip-test cd oceanbase_rails修改 Gemfile 文件,确保包含 tzinfo-data:
gem 'tzinfo-data', platforms: [:ruby]安装依赖:
bundle install
步骤三:创建模型并实现 CRUD 操作
创建用户模型
app/models/user.rb:class User < ApplicationRecord validates :username, presence: true validates :email, presence: true, uniqueness: true validates :age, numericality: { only_integer: true, allow_nil: true } end创建控制器
app/controllers/users_controller.rb实现 CRUD 操作:class UsersController < ApplicationController # 获取所有用户 def index @users = User.all render json: @users end #临时禁用 CSRF 验证 skip_before_action :verify_authenticity_token, if: :json_request? # 创建新用户 def create @user = User.new(user_params) if @user.save render json: @user, status: :created else render json: @user.errors, status: :unprocessable_entity end end # 获取单个用户 def show @user = User.find(params[:id]) render json: @user rescue ActiveRecord::RecordNotFound render json: { error: 'User not found' }, status: :not_found end # 更新用户信息 def update @user = User.find(params[:id]) if @user.update(user_params) render json: @user else render json: @user.errors, status: :unprocessable_entity end end def json_request? request.format.json? end private def user_params params.require(:user).permit(:username, :email, :age) end end配置路由,编辑
config/routes.rb:Rails.application.routes.draw do resources :users end
步骤四:测试 API
启动 Rails 服务器:
rails server -p 3000使用 curl 或 Postman 测试 API:
curl -X POST http://localhost:3000/users -H "Content-Type: application/json" -H "Accept: application/json" -d '{"user": {"username":"testuser","email":"test@example.com","age":25}}' curl -X PATCH http://localhost:3000/users/1 \ -H "Content-Type: application/json" \ -H "Accept: application/json" \ -d '{"user": {"age":26}}' curl -X DELETE http://localhost:3000/users/1 -H "Content-Type: application/json" -H "Accept: application/json"