11.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 데이터베이스가 생성됩니다.

11.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으로 가서 페이지를 확인해야 합니다. 페이지가 표시되지 않으면 서버로 출력되는 로그를 확인하여 디버그합니다.

11.3.2. OpenShift Container Platform의 애플리케이션 구성

애플리케이션이 OpenShift Container Platform에서 실행되는 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"] %>

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

OpenShift Container Platform에서 애플리케이션을 빌드하려면 일반적으로 소스 코드를 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