3.5. Ruby on Rails를 사용하여 애플리케이션 생성


Ruby on Rails는 Ruby로 작성된 웹 프레임워크입니다. 이 가이드에서는 OpenShift Dedicated에서 Rails 4를 사용하는 방법을 설명합니다.

주의

전체 튜토리얼을 살펴보고 OpenShift Dedicated에서 애플리케이션을 실행하는 데 필요한 모든 단계에 대한 개요를 제공합니다. 문제가 발생하면 전체 자습서를 읽어보고 다시 돌아가 문제를 해결하십시오. 이전 단계를 검토하여 모든 단계가 제대로 실행되었는지 확인하는 것도 유용할 수 있습니다.

3.5.1. 사전 요구 사항

  • Ruby 및 Rails에 대한 기본 지식
  • 로컬로 설치된 Ruby 2.0.0+, Rubygems, Bundler 버전
  • Git에 대한 기본 지식
  • OpenShift Dedicated 4의 실행 인스턴스.
  • OpenShift Dedicated 인스턴스가 실행 중이고 사용 가능한지 확인합니다. 또한 이메일 주소와 암호로 로그인할 수 있도록 oc CLI 클라이언트가 설치되어 있고 명령 셸에서 명령에 액세스할 수 있는지 확인합니다.

3.5.2. 데이터베이스 설정

Rails 애플리케이션은 거의 항상 데이터베이스와 함께 사용됩니다. 로컬 개발의 경우 PostgreSQL 데이터베이스를 사용합니다.

프로세스

  1. 데이터베이스를 설치합니다.

    $ sudo yum install -y postgresql postgresql-server postgresql-devel
  2. 데이터베이스를 초기화합니다.

    $ sudo postgresql-setup initdb

    이 명령은 데이터를 저장할 /var/lib/pgsql/data 디렉토리를 생성합니다.

  3. 데이터베이스를 시작합니다.

    $ sudo systemctl start postgresql.service
  4. 데이터베이스가 실행 중이면 rails 사용자를 생성합니다.

    $ sudo -u postgres createuser -s rails

    생성된 사용자에게는 암호가 없습니다.

3.5.3. 애플리케이션 작성

Rails 애플리케이션을 처음부터 시작하는 경우 Rails gem을 먼저 설치해야 합니다. 그런 다음, 애플리케이션 작성을 진행할 수 있습니다.

프로세스

  1. Rails gem을 설치합니다.

    $ gem install rails

    출력 예

    Successfully installed rails-4.3.0
    1 gem installed

  2. Rails gem을 설치한 후 PostgreSQL을 데이터베이스로 사용하는 새 애플리케이션을 생성합니다.

    $ rails new rails-app --database=postgresql
  3. 새 애플리케이션 디렉토리로 변경합니다.

    $ cd rails-app
  4. 이미 애플리케이션이 있으면 pg(postgresql) gem이 Gemfile에 있는지 확인합니다. 없는 경우 gem을 추가하여 Gemfile을 편집합니다.

    gem 'pg'
  5. 종속성이 모두 포함된 새 Gemfile.lock을 생성합니다.

    $ bundle install
  6. pg gem과 함께 postgresql 데이터베이스를 사용하는 것 외에도 config/database.yml에서 postgresql 어댑터를 사용하고 있는지 확인해야 합니다.

    config/database.yml 파일의 default 섹션이 다음과 같이 표시되도록 업데이트되었는지 확인합니다.

    default: &default
      adapter: postgresql
      encoding: unicode
      pool: 5
      host: localhost
      username: rails
      password: <password>
  7. 애플리케이션의 개발 및 테스트 데이터베이스를 생성합니다.

    $ rake db:create

    PostgreSQL 서버에 developmenttest 데이터베이스가 생성됩니다.

3.5.3.1. 시작 페이지 생성

Rails 4는 더 이상 프로덕션에서 정적 public/index.html 페이지를 제공하지 않으므로 새 루트 페이지를 생성해야 합니다.

사용자 정의 시작 페이지를 생성하려면 다음 단계를 수행해야 합니다.

  • 인덱스 작업을 사용하여 컨트롤러 생성
  • 시작 컨트롤러 인덱스 작업에 대한 뷰 페이지 생성
  • 생성된 컨트롤러 및 뷰를 통해 애플리케이션 루트 페이지를 제공할 경로 생성

Rails는 필요한 모든 단계를 수행하는 생성기를 제공합니다.

프로세스

  1. Rails 생성기를 실행합니다.

    $ rails generate controller welcome index

    필요한 모든 파일이 생성됩니다.

  2. config/routes.rb 파일의 2행을 다음과 같이 편집합니다.

    root 'welcome#index'
  3. rails 서버를 실행하여 페이지가 사용 가능한지 확인합니다.

    $ rails server

    브라우저에서 http://localhost:3000으로 가서 페이지를 확인해야 합니다. 페이지가 표시되지 않으면 서버로 출력되는 로그를 확인하여 디버그합니다.

3.5.3.2. OpenShift Dedicated용 애플리케이션 구성

애플리케이션이 OpenShift Dedicated에서 실행되는 PostgreSQL 데이터베이스 서비스와 통신하도록 하려면 데이터베이스 서비스 생성 시 나중에 정의해야 하는 환경 변수를 사용하도록 config/database.ymldefault 섹션을 편집해야 합니다.

프로세스

  • 다음과 같이 사전 정의된 변수를 사용하여 config/database.ymldefault 섹션을 편집합니다.

    config/database YAML 파일 샘플

    <% user = ENV.key?("POSTGRESQL_ADMIN_PASSWORD") ? "root" : ENV["POSTGRESQL_USER"] %>
    <% password = ENV.key?("POSTGRESQL_ADMIN_PASSWORD") ? ENV["POSTGRESQL_ADMIN_PASSWORD"] : ENV["POSTGRESQL_PASSWORD"] %>
    <% db_service = ENV.fetch("DATABASE_SERVICE_NAME","").upcase %>
    
    default: &default
      adapter: postgresql
      encoding: unicode
      # For details on connection pooling, see rails configuration guide
      # http://guides.rubyonrails.org/configuring.html#database-pooling
      pool: <%= ENV["POSTGRESQL_MAX_CONNECTIONS"] || 5 %>
      username: <%= user %>
      password: <%= password %>
      host: <%= ENV["#{db_service}_SERVICE_HOST"] %>
      port: <%= ENV["#{db_service}_SERVICE_PORT"] %>
      database: <%= ENV["POSTGRESQL_DATABASE"] %>

3.5.3.3. Git에 애플리케이션 저장

OpenShift Dedicated에서 애플리케이션을 빌드하려면 일반적으로 소스 코드를 git 리포지토리에 저장해야 하므로 git 이 아직 없는 경우 설치해야 합니다.

사전 요구 사항

  • git을 설치해야 합니다.

프로세스

  1. ls -1 명령을 실행하여 Rails 애플리케이션 디렉토리에 있는지 확인합니다. 명령 출력은 다음과 같아야 합니다.

    $ ls -1

    출력 예

    app
    bin
    config
    config.ru
    db
    Gemfile
    Gemfile.lock
    lib
    log
    public
    Rakefile
    README.rdoc
    test
    tmp
    vendor

  2. Rails 앱 디렉토리에서 다음 명령을 실행하여 코드를 초기화하고 git으로 커밋합니다.

    $ git init
    $ git add .
    $ git commit -m "initial commit"

    애플리케이션이 커밋된 후에는 원격 리포지터리로 푸시해야 합니다. GitHub 계정으로 새 리포지터리를 생성합니다.

  3. git 리포지터리를 가리키는 remote를 설정합니다.

    $ git remote add origin git@github.com:<namespace/repository-name>.git
  4. 애플리케이션을 원격 git 리포지터리로 푸시합니다.

    $ git push

3.5.4. OpenShift Dedicated에 애플리케이션 배포

OpenShift Dedicated에 애플리케이션을 배포할 수 있습니다.

rails-app 프로젝트를 생성하면 자동으로 새 프로젝트 네임스페이스로 전환됩니다.

OpenShift Dedicated에서 애플리케이션을 배포하려면 다음 세 단계를 수행해야 합니다.

  • OpenShift Dedicated의 PostgreSQL 이미지에서 데이터베이스 서비스 생성.
  • 데이터베이스 서비스와 연결된 OpenShift Dedicated의 Ruby 2.0 빌더 이미지와 Ruby on Rails 소스 코드에서 프런트 엔드 서비스를 생성합니다.
  • 애플리케이션 경로를 생성합니다.

3.5.4.1. 데이터베이스 서비스 생성

프로세스

Rails 애플리케이션에는 실행 중인 데이터베이스 서비스가 필요합니다. 이 서비스의 경우 PostgreSQL 데이터베이스 이미지를 사용합니다.

데이터베이스 서비스를 생성하려면 oc new-app 명령을 사용합니다. 데이터베이스 컨테이너 내에서 사용할 몇 가지 필요한 환경 변수를 이 명령으로 전달해야 합니다. 이러한 환경 변수는 사용자 이름, 암호 및 데이터베이스 이름을 설정하는 데 필요합니다. 이러한 환경 변수 값은 원하는 대로 변경할 수 있습니다. 변수는 다음과 같습니다.

  • POSTGRESQL_DATABASE
  • POSTGRESQL_USER
  • POSTGRESQL_PASSWORD

이러한 변수를 설정하면 다음과 같은 결과를 얻을 수 있습니다.

  • 지정된 이름의 데이터베이스가 있습니다.
  • 지정된 이름의 사용자가 있습니다.
  • 사용자가 지정된 암호를 사용하여 지정된 데이터베이스에 액세스할 수 있습니다.

프로세스

  1. 데이터베이스 서비스를 생성합니다.

    $ oc new-app postgresql -e POSTGRESQL_DATABASE=db_name -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password

    데이터베이스 관리자의 암호도 설정하려면 다음 행을 이전 명령에 추가합니다.

    -e POSTGRESQL_ADMIN_PASSWORD=admin_pw
  2. 진행 상황을 확인합니다.

    $ oc get pods --watch

3.5.4.2. 프런트 엔드 서비스 생성

애플리케이션을 OpenShift Dedicated로 가져오려면 애플리케이션이 상주하는 리포지토리를 지정해야 합니다.

프로세스

  1. 프런트 엔드 서비스를 생성하고 데이터베이스 서비스를 생성할 때 설정된 데이터베이스 관련 환경 변수를 지정합니다.

    $ oc new-app path/to/source/code --name=rails-app -e POSTGRESQL_USER=username -e POSTGRESQL_PASSWORD=password -e POSTGRESQL_DATABASE=db_name -e DATABASE_SERVICE_NAME=postgresql

    이 명령을 사용하면 OpenShift Dedicated에서 소스 코드를 가져와서 빌더를 설정하고, 애플리케이션 이미지를 빌드하며, 새로 생성된 이미지를 지정된 환경 변수와 함께 배포합니다. 애플리케이션 이름은 rails-app으로 지정됩니다.

  2. rails-app 배포 구성의 JSON 문서를 보고 환경 변수가 추가되었는지 확인합니다.

    $ oc get dc rails-app -o json

    다음 섹션이 표시되어야 합니다.

    출력 예

    env": [
        {
            "name": "POSTGRESQL_USER",
            "value": "username"
        },
        {
            "name": "POSTGRESQL_PASSWORD",
            "value": "password"
        },
        {
            "name": "POSTGRESQL_DATABASE",
            "value": "db_name"
        },
        {
            "name": "DATABASE_SERVICE_NAME",
            "value": "postgresql"
        }
    
    ],

  3. 빌드 프로세스를 확인합니다.

    $ oc logs -f build/rails-app-1
  4. 빌드가 완료되면 OpenShift Dedicated에서 실행 중인 Pod를 확인합니다.

    $ oc get pods

    myapp-<number>-<hash > 로 시작하는 행이 표시되어야 하며, 이는 OpenShift Dedicated에서 실행되는 애플리케이션입니다.

  5. 애플리케이션이 작동하려면 데이터베이스 마이그레이션 스크립트를 실행하여 데이터베이스를 초기화해야 합니다. 이 작업을 수행하는 방법은 다음 두 가지입니다.

    • 실행 중인 프런트 엔드 컨테이너에서 수동으로 수행합니다.

      • rsh 명령을 사용하여 프런트 엔드 컨테이너에 대해 실행합니다.

        $ oc rsh <frontend_pod_id>
      • 컨테이너 내부에서 마이그레이션을 실행합니다.

        $ RAILS_ENV=production bundle exec rake db:migrate

        Rails 애플리케이션을 development 또는 test 환경에서 실행 중인 경우 RAILS_ENV 환경 변수를 지정할 필요가 없습니다.

    • 템플릿에 사전 배포 라이프사이클 후크를 추가하여 수행합니다.

3.5.4.3. 애플리케이션 경로 생성

서비스를 공개하여 애플리케이션 경로를 생성할 수 있습니다.

주의

지정한 호스트 이름이 라우터의 IP 주소로 해석되는지 확인하십시오.

Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.