이미지 파일 및 설정 파일 삭제, 새로운 CLI 및 문서 추가

This commit is contained in:
2025-03-04 12:19:53 +09:00
parent fb66b69644
commit 2c0a2d738c
33 changed files with 3149 additions and 54 deletions

View File

@@ -0,0 +1,256 @@
# **Ruby에서 데이터베이스 연동 및 Active Record 사용법**
웹 애플리케이션을 개발할 때 데이터베이스(Database)는 필수적인 요소다. Ruby에서는 다양한 데이터베이스와 쉽게 연동할 수 있으며, 특히 **Active Record**를 사용하면 객체지향적으로 데이터를 다룰 수 있다. 이번 글에서는 **Ruby에서 데이터베이스를 연동하는 방법과 Active Record의 기본 개념 및 사용법**을 설명한다.
---
## **1. Ruby에서 데이터베이스 연동 방법**
Ruby는 다양한 데이터베이스를 지원한다. 대표적으로 **SQLite, MySQL, PostgreSQL** 등이 있으며, 각각의 데이터베이스를 사용하기 위해 적절한 **드라이버(Gem)** 를 설치해야 한다.
### **1.1. SQLite 사용하기**
SQLite는 가벼운 파일 기반의 데이터베이스로, 별도의 서버 설정 없이 사용할 수 있어 개발 및 테스트 환경에서 많이 사용된다.
#### **설치 및 초기 설정**
SQLite를 사용하려면 `sqlite3` gem을 설치해야 한다.
```sh
gem install sqlite3
```
데이터베이스 파일을 생성하고 연결하는 간단한 Ruby 코드:
```ruby
require "sqlite3"
# SQLite 데이터베이스 파일 생성 (파일이 없다면 자동 생성)
db = SQLite3::Database.new "test.db"
# 테이블 생성
db.execute <<-SQL
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
);
SQL
# 데이터 삽입
db.execute "INSERT INTO users (name, age) VALUES (?, ?)", ["홍길동", 30]
# 데이터 조회
db.execute "SELECT * FROM users" do |row|
puts row.join(", ")
end
db.close # 연결 종료
```
출력:
```
1, 홍길동, 30
```
SQLite는 파일 기반이므로 `test.db`라는 파일이 생성된다. 이후 Ruby 코드에서 해당 파일을 사용하여 데이터를 읽고 쓸 수 있다.
---
### **1.2. MySQL 사용하기**
MySQL은 대규모 프로젝트에서 자주 사용되는 데이터베이스다. MySQL과 연동하려면 `mysql2` gem을 설치해야 한다.
#### **설치**
```sh
gem install mysql2
```
#### **MySQL 데이터베이스 연결 및 쿼리 실행**
```ruby
require "mysql2"
# MySQL 클라이언트 설정
client = Mysql2::Client.new(
host: "localhost",
username: "root",
password: "password",
database: "test_db"
)
# 테이블 생성
client.query <<-SQL
CREATE TABLE IF NOT EXISTS users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50),
age INT
);
SQL
# 데이터 삽입
client.query("INSERT INTO users (name, age) VALUES ('이순신', 45)")
# 데이터 조회
results = client.query("SELECT * FROM users")
results.each do |row|
puts row["id"], row["name"], row["age"]
end
client.close # 연결 종료
```
이 방식은 SQL을 직접 실행하는 방법으로, ORM(Object-Relational Mapping) 방식보다 코드가 길어질 수 있다. 이를 간편하게 하기 위해 **Active Record**를 사용할 수 있다.
---
## **2. Active Record란?**
**Active Record**는 Ruby on Rails에서 사용하는 ORM(Object-Relational Mapping) 라이브러리다. SQL을 직접 작성하지 않고도 Ruby 객체를 사용해 데이터를 조작할 수 있다.
Active Record를 사용하면 SQL 쿼리를 직접 작성할 필요 없이 **객체 지향 방식으로 데이터를 다룰 수 있다**.
### **2.1. Active Record 설치 및 설정**
Active Record는 별도로 Rails 프레임워크 없이 사용할 수도 있다.
#### **설치**
```sh
gem install activerecord sqlite3
```
#### **데이터베이스 연결 설정**
```ruby
require "active_record"
# SQLite 데이터베이스 연결
ActiveRecord::Base.establish_connection(
adapter: "sqlite3",
database: "test.db"
)
```
이제 Active Record를 활용하여 데이터를 다루는 방법을 살펴보자.
---
## **3. Active Record 사용법**
Active Record를 사용하려면 데이터베이스 테이블에 매핑되는 **모델(Model)** 을 정의해야 한다.
### **3.1. 모델 정의하기**
```ruby
class User < ActiveRecord::Base
end
```
위 코드에서 `User` 클래스는 `users` 테이블과 연결된다. Active Record는 자동으로 **클래스명을 기반으로 테이블명을 추론**하므로, `User` 모델은 `users` 테이블과 매칭된다.
---
### **3.2. 테이블 생성 (마이그레이션 사용)**
Active Record에서는 **마이그레이션(Migration)** 을 사용하여 테이블을 생성할 수 있다.
```ruby
require "active_record"
ActiveRecord::Schema.define do
create_table :users, if_not_exists: true do |t|
t.string :name
t.integer :age
t.timestamps
end
end
```
이제 `users` 테이블이 생성된다.
---
### **3.3. 데이터 삽입**
객체를 생성하고 `.save` 메서드를 호출하면 데이터베이스에 저장된다.
```ruby
user = User.new(name: "강감찬", age: 40)
user.save # 데이터베이스에 저장
```
또는 한 줄로 작성할 수도 있다.
```ruby
User.create(name: "김유신", age: 35)
```
---
### **3.4. 데이터 조회**
```ruby
users = User.all # 모든 데이터 조회
users.each do |user|
puts "#{user.id}, #{user.name}, #{user.age}"
end
```
특정 조건을 사용하여 데이터를 조회할 수도 있다.
```ruby
user = User.find_by(name: "강감찬")
puts user.age # 강감찬의 나이 출력
```
---
### **3.5. 데이터 수정**
```ruby
user = User.find_by(name: "강감찬")
user.age = 50
user.save # 변경된 내용 저장
```
또는 한 줄로 작성 가능하다.
```ruby
User.find_by(name: "강감찬")&.update(age: 50)
```
---
### **3.6. 데이터 삭제**
```ruby
user = User.find_by(name: "강감찬")
user.destroy # 데이터 삭제
```
또는 한 번에 여러 개 삭제할 수도 있다.
```ruby
User.where(age: 50).destroy_all
```
---
## **4. 정리**
Ruby에서 데이터베이스를 연동하는 방법과 **Active Record**를 활용하여 데이터를 다루는 방법을 살펴보았다.
### **📌 데이터베이스 연동 방식**
- `sqlite3`, `mysql2` 등의 Gem을 사용하여 SQL을 직접 실행할 수 있다.
- Active Record를 사용하면 ORM 방식으로 객체 지향적으로 데이터를 다룰 수 있다.
### **📌 Active Record 주요 기능**
- `User.create(name: "홍길동", age: 30)` → 데이터 삽입
- `User.all` → 모든 데이터 조회
- `User.find_by(name: "홍길동")` → 특정 데이터 조회
- `user.update(age: 35)` → 데이터 수정
- `user.destroy` → 데이터 삭제
Active Record를 사용하면 SQL을 직접 작성하지 않고도 데이터를 쉽게 관리할 수 있다. Ruby로 웹 애플리케이션을 개발할 계획이라면, Active Record는 반드시 익혀야 할 핵심 기술이다!