Docker 및 IntelliJ Remote SDK로 Ruby on Rails 개발 환경 완료

Ruby on Rails에서 웹 API 개발을 할 기회가 있었지만 저는 평소에 Type Script만 접하고 로컬 컴퓨터에 Ruby를 설치하지 않았습니다.로컬 기기에 설치하지 않으면 완성할 수 없다는 것을 모색하고 있을 때 인터리제이드Remote Ruby Interpreter를 사용할 수 있을 것 같다.본고는 Remote Interpreter를 사용하여 Rails의 개발 환경 구축 방법을 소개합니다.또 VScodeRemote Container에서도 사용할 수 있다.

컨디션


도구 라이브러리
릴리즈
MacOS
Catalina
Ruby
docker hub ruby: 2.7
Ruby on Rails
6.1
IntelliJ
2020.3
Docker Desktop
3.1.0

컨텐트


하다


  • 생성 docker-compose.yml 및 샘플 항목 전송
  • IntelliJ를 통해 Docker의 Rubby SDK
  • 식별
  • IntelliJ를 통한 RubyGems 인식
  • 참고Quickstart: Compose and Rails| Docker로 진행한다.

    하지 않다

  • IntelliJ 디버깅 허용
  • IntelliJ 테스트 허용
  • 테스트는 명령행 단말기에 완전히 위탁되어 실행됩니다.

    docker-compose.yml 제작 후 rails new 샘플 프로젝트


    샘플 프로젝트를 준비하기 위해서는 즉시 루비와 레이스가 필요합니다.공식적인 절차를 참고하면서 진행합시다.
    Define the Project
    먼저 프로젝트를 만들려는 빈 디렉토리에서 Docker file을 준비합니다.이 일대는 VS코드에서 진행됐습니다.
    Dockerfile
    FROM ruby:2.7
    ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
    RUN curl -sL https://deb.nodesource.com/setup_12.x | bash - &&\
        curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - &&\
        echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list &&\
        apt-get update -qq && apt-get install -y nodejs yarn postgresql-client
    WORKDIR /myapp
    COPY Gemfile /myapp/Gemfile
    COPY Gemfile.lock /myapp/Gemfile.lock
    RUN bundle install
    COPY . /myapp
    
    # Add a script to be executed every time the container starts.
    COPY entrypoint.sh /usr/bin/
    RUN chmod +x /usr/bin/entrypoint.sh
    ENTRYPOINT ["entrypoint.sh"]
    EXPOSE 3000
    
    # Start the main process.
    CMD ["rails", "server", "-b", "0.0.0.0"]
    
    ENVRUN apt-get 부분에 설치yarn 처리가 추가되었습니다.Rails6 에서 애플리케이션을 시작할 때 필요할 수 있습니다.
    다음 정거장.Dcoker 용기를 제작할 때는 본체 쪽 젬file을 당겨 Rails를 설치하는 동작처럼 제작Gemfile과 빈 것Gemfiile.lock을 만든다.
    Gemfile
    source 'https://rubygems.org'
    gem 'rails', '~>6'
    
    touch Gemfile.lock
    
    entrypoint.sh도 필요할 것 같다.
    entrypoint.sh
    #!/bin/bash
    set -e
    
    # Remove a potentially pre-existing server.pid for Rails.
    rm -f /myapp/tmp/pids/server.pid
    
    # Then exec the container's main process (what's set as CMD in the Dockerfile).
    exec "$@"
    
    마지막docker-compose.yml.공식적인 내용을 따르다.
    docker-compose.yml
    version: "3.9"
    services:
      db:
        image: postgres
        volumes:
          - ./tmp/db:/var/lib/postgresql/data
        environment:
          POSTGRES_PASSWORD: password
      web:
        build: .
        command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
        volumes:
          - .:/myapp
        ports:
          - "3000:3000"
        depends_on:
          - db
    
    이 상태docker-compose run web rails new에서 샘플 프로젝트를 생성합니다.
    docker-compose run --no-deps web rails new . --force --database=postgresql
    
    명령을 실행하는 디렉토리에 Rubbyon Rails의 파일 그룹을 생성하면 됩니다.

    IntelliJ를 사용하여 Docker의 Ruby SDK 식별


    Rubby SDK를 사용하기 위해 IntelliJ의 SDKRemote를 구성하는 Ruby 인터페이스를 사용하여 설정합니다.メニューバー > File > New > New Project 새 프로젝트를 만듭니다.이전 절차에 따라 Rails의 파일 클러스터를 만들었지만, IntelliJ는'Rails의 프로젝트다'라는 것을 깨닫기 위해 기존 프로젝트를 여는 것이 아니라 이 절차를 밟았다.
    여기서부터 아래의 그림처럼 선택하십시오 Project SDK > Add Ruby SDK > New Remote....

    원격 SDK 추가
    또한 Rubby 해석기의 설정 화면은 다음과 같습니다.
  • Docker compose
  • Server: Docker(New...이후 기본값으로 설정)
  • Configuration files: 위에서 설명한 내용docker-compose.yml
  • Service: web
  • Environment variables: <empty>
  • Ruby or version manager path: ruby
  • Docker Compose부터 설정하면 IntelliJ는 방금 설치한 rails gem을 사용하기 때문에 편리합니다.Docker로도 해석기를 구성할 수 있지만 곧 プロジェクトの構成に必要だから rails gem をインストールしてね의 정보가 표시됩니다.
    설정이 끝나면 루비 SDK와 라일스가 설정한 상태가 되기 때문에 Next로 제작된 프로젝트명과 위치를 설정한다.이제 프로젝트를 시작합니다.또한 기존 Rails 설정을 덮어쓰느냐는 질문에 "덮어쓰지 않기"는 OK.
    마지막으로 두 번Ctrl을 눌러 Run Anythngbundle install을 호출합니다.이 동작을 실행하면 docker-compose 루비가 IntelliJ 측에gem을 설치합니다.그 결과 편집기의 코드 점프와require를 해결할 수 있었다.
    이렇게 되면 로컬 기기에 루비를 설치하지 않고 IntelliJ로 Rails 앱을 개발할 수 있게 된다.

    Rails 애플리케이션 시작


    본론에서 벗어났지만 어렵게 이 지경까지 해냈으니 독커 본가Connect the database부터 앱을 시작하는 곳까지 한번 해보자.config/database.yml를 다음으로 덮어씁니다.
    config/database.yml
    default: &default
      adapter: postgresql
      encoding: unicode
      host: db
      username: postgres
      password: password
      pool: 5
    
    development:
      <<: *default
      database: myapp_development
    
    
    test:
      <<: *default
      database: myapp_test
    
    Docker를 시작합니다.
    docker-compose up
    
    Webpacker configuration file not found와 같은 오류가 발생할 수 있으므로 다음과 같이 실행합니다.여기 야인이 필요해.
    docker-compose run --no-deps web bundler exec rails webpacker:install
    
    설치 후 부팅됩니다.
    docker-compose up
    
    정상적으로 작동할 수 있을 거예요.데이터베이스를 만드는 프로그램도 있기 때문에 다른 터미널에서 실행합니다.
    docker-compose run web bundle exec rake db:create
    
    localhost:3000에 시작 신호가 표시되면 성공합니다.

    총결산


    Dodcker의 Rails6을 IntelliJ를 통해 개발할 수 있도록 리모트 SDK가 추가됐다.이렇게 하면 Mac에 Ruby를 설치하지 않아도 일을 할 수 있다.또한 Docker가 Rails6을 사용할 때 부족한 공식 프로그램을 수정하여 시작할 수 있는 부분을 보여 주었다.참고가 됐으면 좋겠어요.

    소스 코드


    cm-wada-yusuke/rails6-docker-compose-sample

    좋은 웹페이지 즐겨찾기