The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2021-07-07
소프트웨어 개발

활성 레코드로 처음부터 간단한 루비 애플리케이션 만들기

The Codest

데미안 와트로바

Software Engineer

MVC는 애플리케이션의 책임을 분담하여 더 쉽게 이동할 수 있도록 하는 디자인 패턴입니다. Rails는 관례적으로 이 디자인 패턴을 따릅니다.

저는 다음과 같이 작업하는 것을 좋아합니다. 레일 작동하는 애플리케이션을 쉽고 빠르게 만들어 전 세계 또는 친구들에게 보여줄 수 있기 때문입니다. 그러나 다음과 같이 큰 프레임워크가 필요하지 않은 애플리케이션 유형도 있습니다. 레일 및 모든 기능.

전체 MVC 패턴 중 M(모델)만 필요한 애플리케이션이 있을 수 있습니다. 모델-컨트롤러. 를 시작할 가치가 있습니까? 프로젝트 in 레일 V-C(뷰-컨트롤러) 부분이 필요하지 않다는 것을 알고 있다면?

다음 사항을 알아두면 좋습니다. 활성 레코드 MVC를 담당하는 액티브 모델, 액션 팩 및 액션 뷰는 외부에서 독립적으로 사용할 수 있습니다. 레일. 이를 통해 간단한 루비 애플리케이션 데이터베이스에 연결하여 불필요한 코드 및 라이브러리를 패키지로 가져올 수 있도록 rails new 명령을 실행합니다.

이를 달성하는 방법을 단계별로 설명했으며 전체 코드는 GitHub에서 찾을 수 있습니다. 링크는 이 글 하단에 있습니다. 

구조

프로젝트를 시작하기 위해 필요한 것은 많지 않습니다. 먼저 보석 파일 에서 애플리케이션에 필요한 보석을 추가하는 데 필요한 버전과 함께 Ruby 를 사용할 것입니다.

 고양이 보석 파일

# frozen_string_literal: true

소스 'https://rubygems.org'

루비 '2.7.2'

선택 사항 README.md 파일은 우리 애플리케이션의 작동 방식과 향후 프로젝트를 함께 개발할 다른 개발자를 위해 애플리케이션을 계속 개발하는 방법을 설명하는 것입니다.

cat README.md

# 애플리케이션

할 일: 이 텍스트와 위의 텍스트를 삭제하고 앱을 설명합니다.

앱 디렉토리에 application.rb 파일은 애플리케이션에 추가할 라이브러리와 파일을 구성하고 로드하는 역할을 합니다. 실행하는 것을 잊지 마세요. 번들 설치 를 생성하여 Gemfile.lock. 이 단계에서 애플리케이션의 구조는 다음과 같아야 합니다:

트리
 .
 ├── Gemfile
 ├── Gemfile.lock
 ├── README.md
 └── app
     └── application.rb

데이터베이스

이러한 구조가 준비되면 어떤 데이터베이스 엔진을 선택하고 구성할지 고려할 수 있습니다. 이 글에서는 제가 가장 많은 경험을 가지고 있는 PostgresQL을 선택했습니다. MySQL이나 SQlite3 또는 다른 엔진도 사용할 수 있습니다. 활성 레코드. 기술을 선택할 때는 애플리케이션의 목적, 사용 용도 및 목적에 따라 안내를 받는 것이 좋습니다. 

빠르고 간단한 데이터베이스 구성을 위해 저는 docker와 docker-compose를 사용했습니다. 이러한 도구의 구성과 장단점에 대해 자세히 설명하고 싶지는 않지만, 도커를 사용해 본 적이 없다면 다음 공식 문서를 참조하시기 바랍니다. Docker 그리고 도커 컴포즈 에서 자세한 내용을 확인하세요.

# docker-compose.yml

버전: '3.7'
서비스
  postgresql:
    이미지: postgres:12.0-alpine
    포트
- 5432:5432
    환경:
- PGDATA=/postgresql
- POSTGRESPASSWORD=postgres
- POSTGRESUSER=postgres
    볼륨
- DB-볼륨:/postgresql
volumes:
  db-volume:

또한 보석 파일

gem 'pg'

그리고 우리의 application.rb 파일

# 앱/응용 프로그램.rb

require 'pg'

모듈 애플리케이션

  클래스 Error < StandardError; 끝

# 코드가 여기로 이동합니다...

end

독립형 마이그레이션, 레이크

애플리케이션 구성의 다음 단계는 애플리케이션에 스탠드얼론_마이그레이션 그리고 레이크 gems를 추가하면 Rails에서와 마찬가지로 마이그레이션을 관리하고 rake db: 명령에 액세스할 수 있습니다. 

  1. 업데이트 보석 파일 필요한 보석으로 번들 설치
비레일 및 비루비 애플리케이션에 사용되는 # 보석

gem '스탠드얼론_마이그레이션'

# standalone_migrations는 Rails에서와 같이 마이그레이션을 생성하고 실행할 수 있도록 rake가 필요합니다.

gem 'rake'

환경 변수를 로드하는 데 # 젬 필요

gem 'dotenv'
  1. 추가해 보겠습니다. 레이크파일 를 루트 디렉토리에 있는 프로젝트에 추가하여 dotenv 그리고 스탠드얼론_마이그레이션 이전에 추가한 
# frozen_string_literal: true

'dotenv' 필요

Dotenv.load

require 'standalone_migrations'

스탠드얼론 마이그레이션::태스크.로드_태스크

와 함께 레이크파일 이 방법으로 구성하면 레이크 를 사용하여 작동하고 있습니다. rake -T 명령을 실행하면 애플리케이션에서 사용 가능한 명령 목록을 반환합니다.

루비 앱
  1. 이전 레이크 DB:생성를 사용하더라도 프로젝트에 Postgres 인스턴스에 연결하기 위한 구성 파일이 있어야 합니다. 이를 위해서는 db 디렉터리와 함께 config.yml 파일을 생성합니다:
# db/config.yml

기본값: &기본값

  어댑터: postgresql

  인코딩: 유니코드

  pool: 

  데이터베이스: 

  사용자 이름 

  password: 

  host: 

  port: 

개발:

  <<: *default

테스트:

  <<: *기본값

스테이징:

  <<: *기본값

프로덕션:

  <<: *기본값

보시다시피, 환경 변수를 사용하여 저장소에 있어서는 안 되는 민감한 데이터를 보관할 Postgres에 대한 연결을 구성했습니다. 이를 위해 이전에 추가한 보석 도트엔브이에도 추가되었으며, 이는 레이크파일 와 함께 스탠드얼론_마이그레이션. Git을 사용하여 애플리케이션의 버전 관리를 관리하는 경우, 애플리케이션의 버전 관리를 관리하기 위해 .gitignore 파일에서 추적 가능성을 비활성화합니다. .env 파일을 프로젝트에서 삭제합니다.

 # .gitignore
.env*
!.env.example

를 추가하고.env 파일에 올바르게 구성된 환경이 포함된

# .env

DATABASE_NAME="개발"

DATABASE_USER="postgres"

DATABASE_PASSWORD="postgres"

DATABASE_HOST="localhost"

DATABASE_PORT="5432"
  1. 이 단계에서는 다음을 실행할 수 있어야 합니다. 레이크 DB:생성 명령으로 데이터베이스를 생성합니다.

    루비 웹 애플리케이션

  2. 다음을 통해 새 마이그레이션을 추가해 보겠습니다. rake db:new_migration name=를 생성하여 게시물 테이블이 있는 :title 열

    Rails 웹 애플리케이션

# frozen_string_literal: true

CreatePosts < ActiveRecord::Migration[6.0] 클래스

  def change

    create_table :posts do |t|

      t.string :title

    end

  end

끝
Ruby on Rails 웹 애플리케이션

다음과 같이 db/migrate 디렉토리가 자동으로 추가되고 schema.rb 마이그레이션이 성공적으로 완료된 후 생성되었습니다. 현재 프로젝트 구조는 다음과 같습니다:

 tree
.
├── Gemfile
├── Gemfile.lock
├── README.md
├── 레이크파일
├── .gitignore
├── .env.example
├── app
│ └── application.rb
├── db
│ ├── config.yml
│ ├── 마이그레이션
│ │ └── 20210504135128_create_posts.rb
│ └── schema.rb
└── docker-compose.yml

활성 레코드

마지막으로 애플리케이션을 만드는 또 다른 단계는 다음을 추가하는 것입니다. 액티버코드 및 그 구성. 이를 위해서는 젬 파일에 3개의 젬을 더 업데이트해야 합니다:

gem '액티버레코드'
gem 'erb'
gem 'yaml'

추가하는 이유 erb 그리고 ymal 에 대한 설명은 아래 댓글에서 확인할 수 있습니다. 전체 active_record 구성은 앱/애플리케이션.rb 파일을 만듭니다.

여기서 어떤 일이 일어나는지 하나씩 살펴보겠습니다:

# frozen_string_literal: true

# 다른 환경에서 애플리케이션을 실행할 수 있도록 하려는 경우,
# 테스트 또는 프로덕션과 같은 다른 환경에서 애플리케이션을 실행하려면 처음에 환경 변수에서 가져온
#를 설정하는 것이 좋으며, 이는 환경 변수에서 가져온 것입니다.
# 또는 기본적으로 `개발`로 설정하는 것이 좋습니다.

ENV['ENVIRONMENT'] ||= 'development'

# 추가된 젬을 사용하려면 Kernel#require 메서드를 사용하여 로드해야 합니다,
#는 매개변수로 전달된 파일 또는 라이브러리를 로드합니다.

require 'pg'
require 'active_record'
require 'dotenv'
require 'yaml'
require 'erb'

# 기본적으로 환경 변수를 로드하기 위한 Dotenv.load는 '.
#를 '.env' 파일에 전달하므로 다른 환경을 사용하려면
#는 이를 아래 방법으로 확장하여 먼저 세트 개발을 위해 다음과 같이 합니다.
# 환경에서는 '.env.development.local'로 끝나는 파일을 찾습니다,
#, '.env.development', 마지막으로 '.env'로 끝나는 파일을 찾습니다.

Dotenv.load(".env.#{ENV.fetch('환경')}.local", ".env.#{ENV.fetch('환경')}", '.env')

# 데이터베이스 설정을 로드하는 데 필요한 메서드
def db_configuration
  # 아래 메서드는 설정이 있는 파일의 경로를 반환합니다.
  db_configuration_file_path = File.join(File.expand_path('..', __dir__), 'db', 'config.yml')

  # 파일 경로를 알면 해당 값을 읽을 수 있습니다. config.yml
  # 파일에는 환경 변수가 포함되어 있으며, 눈치 채셨겠지만,
  #는 erb  구문을 사용하므로 erb gem도 사용해야 합니다. 이것이 없으면
  # 변수 값을 올바르게 읽지 못하고 액티버코드
  #가 postgres에 연결할 수 없으며 다음 메서드가 반환됩니다.
  # 구성을 문자열로 반환합니다.

  db_configuration_result = ERB.new(File.read(db_configuration_file_path)).result

  # 이전에 추가한 `yaml` 젬을 사용하여 구성을 안전하게 로드할 수 있습니다.

  YAML.safe_load(db_configuration_result, 별칭: true)
end

# 마지막으로, 액티버레코드와 포스트그레스 사이의 연결을 생성해야 합니다.
#를 `establish_connection` 메서드를 사용하여 연결합니다.
ActiveRecord::Base.establish_connection(db_configuration[ENV['ENVIRONMENT']])

모듈 Application
  class Error < StandardError; end
  # 코드가 여기...
end

이미 구성이 완료되었으므로 포스트 모델에 ruby 앱으로 이동합니다. 

`├── 앱`

`│ └── 모델`

`│ └── post.rb`
app/models/post.rb
# frozen_string_literal: true

class Post < ActiveRecord::Base;end

에 파일을 로드하는 것을 잊지 마십시오. application.rb

'앱/모델/포스트' 요구

또한 요구 사항을 추가하는 것을 잊지 마십시오. 'app/runner' 에 앱/애플리케이션.rb

애플리케이션, 서비스, 더 많은 모델에 새 파일을 추가하려면 다음에서 로드해야 합니다. application.rb.

요약

현재 루비 애플리케이션은 계속 사용할 준비가 되었습니다. 구성을 완료했습니다:

  • 데이터베이스 연결,
  • 활성 레코드,
  • 레이크를 사용한 독립형 마이그레이션

보시다시피, 항상 다음을 사용할 필요는 없습니다. 새로운 레일. 이렇게 하면 애플리케이션에서 사용되지 않는 불필요한 코드를 피할 수 있습니다. 애플리케이션 개발을 더 잘 제어할 수 있습니다. 시간이 지나면서 더 많은 라이브러리와 비즈니스 로직을 추가할 수 있습니다. 이렇게 구성된 애플리케이션을 사용하여 크롤러 또는 스크레이퍼를 만들고, 정보를 검색하여 자체 데이터베이스에 저장하거나 파일을 로드하고 흥미로운 정보를 추출할 외부 API에 연결할 수 있습니다. 여러분의 애플리케이션 개발에 행운이 함께 하기를 기원합니다!

보너스

애플리케이션도 어떻게든 시작해야 합니다. 예를 들어 터미널에서 여러 가지 방법으로 시작할 수 있습니다. 터미널에서 exe/app 파일에서 애플리케이션 로직을 로드하는 '앱/애플리케이션' 파일을 통해 애플리케이션을 실행하고 러너 서비스를 앱 디렉토리에 추가합니다.

#!/usr/bin/env ruby
# frozen_string_literal: true

'번들러/설정' 필요

$LOAD_PATH.unshift File.expand_path('..', __dir__)
'앱/애플리케이션' 요구

Runner.start
# frozen_string_literal: true

Runner 클래스
  def self.start
    '시작'을 넣습니다.
  end
end
루비 앱 개발

또한 다음을 추가하는 것을 잊지 마십시오. '앱/러너' 필요 에 앱/애플리케이션.rb

코드는 GitHub에서 찾을 수 있습니다:

– https://github.com/dwatek/simpleruby앱

자세히 보기

GraphQL Ruby. 성능은 어떨까요?

철도 및 기타 운송 수단

TMUX, Vim, Fzf + Ripgrep을 사용한 레일 개발

관련 문서

상승하는 화살표와 비용 효율성 또는 절감을 상징하는 금화가 있는 하락하는 막대 차트의 추상적인 그림. 밝은 회색 바탕에 "In Code We Trust"라는 슬로건과 함께 왼쪽 상단에 The Codest 로고가 표시됩니다.
소프트웨어 개발

제품 품질 저하 없이 개발팀을 확장하는 방법

개발팀을 확장하고 계신가요? 제품 품질을 저하시키지 않고 성장하는 방법을 알아보세요. 이 가이드에서는 확장할 시기의 징후, 팀 구조, 채용, 리더십 및 도구와 더불어 The Codest가 어떻게...

최신
소프트웨어 개발

미래 지향적인 웹 앱 구축: The Codest의 전문가 팀이 제공하는 인사이트

The Codest가 최첨단 기술로 확장 가능한 대화형 웹 애플리케이션을 제작하고 모든 플랫폼에서 원활한 사용자 경험을 제공하는 데 탁월한 성능을 발휘하는 방법을 알아보세요. Adobe의 전문성이 어떻게 디지털 혁신과 비즈니스를 촉진하는지 알아보세요...

최신
소프트웨어 개발

라트비아에 본사를 둔 10대 소프트웨어 개발 기업

최신 기사에서 라트비아 최고의 소프트웨어 개발 기업과 그들의 혁신적인 솔루션에 대해 알아보세요. 이러한 기술 리더들이 어떻게 귀사의 비즈니스를 향상시키는 데 도움을 줄 수 있는지 알아보세요.

thecodest
엔터프라이즈 및 스케일업 솔루션

Java 소프트웨어 개발 필수 사항: 성공적인 아웃소싱을 위한 가이드

The Codest로 효율성을 높이고 전문 지식을 활용하며 프로젝트 성공을 이끌 수 있는 성공적인 outsourcing Java 소프트웨어 개발에 대한 이 필수 가이드를 살펴보세요.

thecodest
소프트웨어 개발

폴란드 아웃소싱을 위한 최고의 가이드

폴란드에서 outsourcing가 급증한 것은 경제, 교육, 기술 발전으로 인한 IT 성장과 비즈니스 친화적인 환경이 조성된 덕분입니다.

더코데스트

지식창고를 구독하고 IT 분야의 전문 지식을 최신 상태로 유지하세요.

    회사 소개

    The Codest - 폴란드에 기술 허브를 둔 국제 소프트웨어 개발 회사입니다.

    영국 - 본사

    • 사무실 303B, 182-184 하이 스트리트 노스 E6 2JA
      영국 런던

    폴란드 - 현지 기술 허브

    • 파브리츠나 오피스 파크, 알레야
      포코주 18, 31-564 크라쿠프
    • 뇌 대사관, 콘스트럭터스카
      11, 02-673 바르샤바, 폴란드

      The Codest

    • 홈
    • 회사 소개
    • 서비스
    • Case Studies
    • 방법 알아보기
    • 채용 정보
    • 사전

      서비스

    • IT 자문
    • 소프트웨어 개발
    • 백엔드 개발
    • 프론트엔드 개발
    • Staff Augmentation
    • 백엔드 개발자
    • 클라우드 엔지니어
    • 데이터 엔지니어
    • 기타
    • QA 엔지니어

      리소스

    • 외부 소프트웨어 개발 파트너와의 협력에 대한 사실과 오해
    • 미국에서 유럽으로: 미국 스타트업이 유럽으로 이전을 결정하는 이유
    • 테크 오프쇼어 개발 허브 비교: 테크 오프쇼어 유럽(폴란드), 아세안(필리핀), 유라시아(터키)
    • CTO와 CIO의 주요 과제는 무엇인가요?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • 웹사이트 이용 약관

    저작권 © 2025 by The Codest. 모든 권리 보유.

    ko_KRKorean
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese es_ESSpanish nl_NLDutch etEstonian elGreek ko_KRKorean