Turso 퀵스타트
Turso 퀵스타트 (ActiveRecord)
몇 가지 간단한 단계로 Turso와 ActiveRecord를 시작하는 방법이에요. 연결부터 CRUD, 마이그레이션, 연관관계까지 한 번에 훑어봐요.
출처: 문서
본문
(기술 프리뷰 배너 스니펫: 이 기능은 기술 프리뷰 단계예요)
이 Ruby 퀵스타트에서 우리는 다음을 배워요:
- 데이터베이스 자격 증명 가져오기
- libSQL ActiveRecord 젬 설치
- 로컬 또는 원격 Turso 데이터베이스에 연결
- 모델 정의와 생성
- 기본 CRUD 연산 수행
- raw SQL 쿼리 실행
- 마이그레이션 다루기
1. 데이터베이스 자격 증명 가져오기
계속 진행하려면 기존 데이터베이스가 필요해요. 아직 없다면 새로 만들어 보세요.
retrieve-database-credentials.mdx 스니펫을 참고해 자격 증명을 확인하세요.
2. 설치 (Install)
Ruby 프로젝트의 Gemfile에 다음 젬들을 추가해요:
gem 'libsql_activerecord'
gem 'activerecord'
그다음 실행해요:
bundle install
3. 연결 (Connect)
데이터베이스 연결을 세팅하는 Ruby 파일(예: database.rb)을 만들어요:
Embedded Replicas (임베디드 복제본)
require 'libsql_activerecord'
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: 'libsql',
url: ENV['TURSO_DATABASE_URL'],
auth_token: ENV['TURSO_AUTH_TOKEN'],
path: 'path/to/local/replica.db'
)
Local only (로컬 전용)
require 'libsql_activerecord'
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: 'libsql',
path: 'path/to/local.db'
)
Remote only (원격 전용)
require 'libsql_activerecord'
require 'active_record'
ActiveRecord::Base.establish_connection(
adapter: 'libsql',
url: ENV['TURSO_DATABASE_URL'],
auth_token: ENV['TURSO_AUTH_TOKEN']
)
In-memory (인메모리)
require 'libsql_activerecord'
require 'active_record'
ActiveRecord::Base.establish_connection(adapter: 'libsql')
4. 모델 정의하기
데이터베이스 테이블마다 모델 파일을 만들어요. 예를 들어 product.rb:
class Product < ActiveRecord::Base
validates :name, presence: true
end
5. 마이그레이션 생성과 실행
마이그레이션 파일(예: 001_create_products.rb)을 만들어요:
class CreateProducts < ActiveRecord::Migration[8.0]
def change
create_table :products do |t|
t.string :name
t.text :description
t.timestamps
end
end
end
마이그레이션을 실행해요:
require_relative 'database'
require_relative '001_create_products'
CreateProducts.migrate(:up)
6. 실행 (Execute)
기본 CRUD 연산을 수행해 봐요:
생성(Create):
product = Product.create(name: 'Book', description: 'A book about books')
조회(Read):
all_products = Product.all
first_product = Product.first
found_product = Product.find_by(name: 'Book')
수정(Update):
product.update(description: 'An updated description')
삭제(Delete):
product.destroy
Raw SQL:
results = ActiveRecord::Base.connection.execute("SELECT * FROM products WHERE name LIKE '%Book%'")
results.each do |row|
puts row.inspect
end
7. 연관관계 다루기 (Work with associations)
모델에 연관관계를 정의해요:
class Author < ActiveRecord::Base
has_many :books
end
class Book < ActiveRecord::Base
belongs_to :author
end
코드에서 연관관계를 사용해요:
author = Author.create(name: 'Jane Doe')
book = author.books.create(title: 'My First Book')
puts author.books.count # => 1
puts book.author.name # => "Jane Doe"