window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster가 이미 존재합니다') } else { w.LeadBooster = { q: [], on: 함수 (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: 함수 (n) { this.q.push({ t: 't', n: n }) }, } } })() 루비 생태계에서 랙의 역할 - The Codest
The Codest
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 산업 분야
    • 핀테크 및 뱅킹
    • E-commerce
    • 애드테크
    • 헬스 테크
    • 제조
    • 물류
    • 자동차
    • IOT
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
  • 회사 소개
  • 서비스
    • 소프트웨어 개발
      • 프론트엔드 개발
      • 백엔드 개발
    • Staff Augmentation
      • 프론트엔드 개발자
      • 백엔드 개발자
      • 데이터 엔지니어
      • 클라우드 엔지니어
      • QA 엔지니어
      • 기타
    • IT 자문
      • 감사 및 컨설팅
  • 가치
    • CEO
    • CTO
    • 배달 관리자
  • 우리 팀
  • Case Studies
  • 방법 알아보기
    • 블로그
    • 모임
    • 웹 세미나
    • 리소스
채용 정보 연락하기
뒤로 화살표 뒤로 가기
2022-08-25
소프트웨어 개발

루비 생태계에서 랙의 역할

니콜라스 니소리아

전문가로부터 루비 생태계에서 랙의 역할에 대해 자세히 알아보고 루비 게임의 기술을 향상하세요.

다음과 함께 작업하는 동안 루비 웹 프레임워크 당연한 것으로 받아들이는 것이 일반적입니다. 프레임워크가 HTTP 요청을 처리하고 미들웨어 로직을 실행한다는 것을 알고 있습니다. 하지만 그 이면에 무엇이 있는지 궁금해지기 시작하면서 랙에 대한 이야기를 듣기 시작했습니다.

랙이란 무엇인가요?

그리고 프로젝트 은 "모듈식 루비 웹 서버 인터페이스"로 설명됩니다. Rack은 웹 서버, 웹 프레임워크 및 미들웨어용 API를 통합하여 웹 애플리케이션을 만들 수 있는 인터페이스입니다.

랙 루비 구성표

위 그림에서 설명한 것처럼, Rack은 웹 애플리케이션과 애플리케이션 서버 사이의 중개자 역할을 하며, 가장 간단한 방식으로 HTTP 요청을 래핑합니다.
가능한 방법.

랙 애플리케이션

Rack 애플리케이션은 클래스가 아닌 루비 객체로, 다음에 응답합니다. 통화. 정확히 하나의 인수, 즉 환경 의 동결되지 않은 배열을 반환합니다.
정확히 세 가지 값입니다:

  • 그리고 상태,
  • 의 헤더,
  • 및 body.

    랙 애플리케이션의 자세한 사양은 다음과 같이 확인할 수 있습니다. 여기.

'랙' 필요

클래스 RackApp
  def call(env)
        status = 200
        headers = { 'Content-Type' => 'text/html' }
        body = ['<h1>내 랙 앱<h1>']

    [상태, 헤더, 본문]
  end
end

랙::핸들러

핸들러는 웹 서버를 Rack과 연결합니다. Rack에는 Thin, WEBrick, FastCGI, CGI, SCGI 및 LiteSpeed용 핸들러가 포함되어 있습니다. Rack을 지원하는 각 애플리케이션 서버는 다음을 수행해야 합니다.
는 연결을 생성하기 위한 핸들러를 제공합니다(퓨마에는 자체 핸들러가 있습니다). 핸들러는 일반적으로 MyHandler.run(myapp). 두 번째 선택적 해시를 전달하여 서버별 구성을 포함할 수 있습니다.

씬 애플리케이션 서버 사용

Rack::Handler::Thin.run(app)

구성을 추가할 기본 파일은 다음과 같습니다. config.ru 를 사용하여 실행할 수 있습니다. 랙업 명령을 실행합니다.

랙 미들웨어

Rack을 사용하면 미들웨어 애플리케이션(기본 웹 애플리케이션과 애플리케이션 서버 사이의 애플리케이션)을 만들 수 있습니다. 이러한 미들웨어 애플리케이션은 서로 연결되어 순차적으로 실행됩니다.

랙 미들웨어는 다음과 같은 모든 사양을 구현해야 합니다. 랙 애플리케이션 를 클릭하고 다음 사항을 충족합니다:

  • 클래스여야 합니다,
  • 에는 하나의 매개변수(기본 애플리케이션)만 수신하는 초기화기가 있습니다,
  • 를 클릭하고 다음 미들웨어 또는 애플리케이션을 호출합니다.
클래스 RackMiddleware
def initialize(app)
앱 = 앱
end
def call(env)
app.call(env)
end
end

실무에 적용

이제 기본 사항을 알았으니 Rack 미들웨어로 첫 번째 Rack 애플리케이션을 만들고 Puma(애플리케이션 서버)를 사용하여 실행할 준비가 되었습니다.

종속성 설치

다음 사항이 있는지 확인합니다. 랙 보석과 puma gem이 설치되었습니다.

gem 설치 랙
gem 설치 푸마

구성 파일 만들기

먼저, 다음과 같은 파일을 만들어야 합니다. config.ru 이 파일은
애플리케이션을 실행하고 미들웨어를 추가하기 위해 Rack::Builder DSL을 사용합니다.

랙 애플리케이션 추가

내 config.ru 파일에 정의한 간단한 랙 애플리케이션을 추가합니다.
이전 섹션을 참조하세요.

# config.ru

클래스 RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>내 랙 앱<h1>']

    [상태, 헤더, 본문]
  end
end

랙 미들웨어 추가

여기서 간단한 미들웨어를 약간 수정하면 이제 실행 후 서버 소프트웨어가 HTML 본문에 추가됩니다.

# config.ru

클래스 RackMiddleware
  def initialize(app)
    앱 = 앱
  end

  def call(env)
    상태, 헤더, 본문 = @app.call(환경)

    body << env['SERVER_SOFTWARE']

    [status, headers, body]
  end
end

애플리케이션 서버 실행

마지막 단계로 서버를 실행하고 애플리케이션이 실행되는 것을 확인합니다. 우리의 config.ru 파일은 다음과 같이 표시됩니다:

# config.ru

클래스 RackApp
  def call(env)
    status = 200
    headers = { 'Content-Type' =&gt; 'text/html' }
    body = ['<h1>내 랙 앱<h1>']

    [상태, 헤더, 본문]
  end
end

클래스 RackMiddleware
  def initialize(app)
    앱 = 앱
  end

  def call(env)
    상태, 헤더, 본문 = @app.call(환경)

    body <&lt; env[&#039;SERVER_SOFTWARE&#039;]

    [상태, 헤더, 본문]
  end
end

랙미들웨어 사용
RackApp.new 실행

마지막 줄에서는 다음을 사용하여 미들웨어를 지정합니다. 사용 를 사용하여 애플리케이션을 실행합니다. 실행합니다.실행할 준비가 되었습니다. 랙업 를 클릭하고 서버가 실행 중인 것을 확인합니다. 애플리케이션이 실행되고 있는 포트를 확인할 수 있으며 액세스 후 다음과 같은 내용이 표시됩니다:

랙 서버 텍스트

결론

때로는 기본으로 돌아가 우리가 사용하는 기술에 대한 통찰력을 배우는 것이 좋습니다. 학습 랙은 아키텍처에 대한 명확한 개요를 제공하고 아키텍처 뒤에 숨겨진 '마법'을 보여줍니다. 루비 웹 프레임워크.

협력 배너

관련 문서

소프트웨어 개발

GraphQL Ruby. 성능은 어떨까요?

다른 기술과 마찬가지로 GraphQL에도 문제가 있으며, 그 중 일부는 아키텍처에서 직접적으로 발생하는 문제이고 일부는 다른 애플리케이션에서 볼 수 있는 것과 동일한 문제입니다. 하지만 해결책은...

The Codest
토마스 스카라덱 개발 아키텍트
소프트웨어 개발

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

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

The Codest
데미안 와트로바 Software Engineer
E-commerce

Ruby on Rails는 MVP를 구축하기에 좋은 기술인가요?

최소기능제품(MVP)은 린 스타트업 방법론의 원칙 중 하나입니다. 목표는 기업가들이 가능한 한 빨리 학습 과정을 시작할 수 있도록 돕는 것입니다.

니콜라스 니소리아

지식창고를 구독하고 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