Rails 프로젝트의 Docker를 클론하고 RefineryCMS를 추가하려면

이 보도에 관하여

  • 제목과 같습니다.당시 갔던 일만 늘어놓다.
  • 사이트 축소판 그림

  • https://qiita.com/kawasin73/items/b8b092e9b763387c6ba8
  • 공식 사이트 가이드
  • https://blog.freedom-man.com/ruby-notbuilt-message
  • https://qiita.com/io_fleming/items/ba71ef5b24f4131894ff
  • Rails 프로젝트 Docker 이미지 관련 프로그램

  • 폴더에서 다음 명령을 실행합니다
  • .
    git clone https://github.com/kawasin73/rails_docker_template.git .
    git checkout origin/base/ruby-2.5.1-rails-5.2.0
    git branch -d master && git checkout -b master
    
    
  • Gemfile의 Rails 버전을 5.2.0에서 5.1.7
  • 로 편집
    Gemfile
    source 'https://rubygems.org'
    ruby '2.5.1'
    
    gem 'rails', '5.1.7'   # ← 編集後
    
  • 아래 명령 실행
  • script/init && script/bootstrap
    
    script/init를 실행할 때, 이러한 오류 메시지가 발생하면, 내 환경에서 Docker를 다시 시작하면 해제됩니다
    ERROR: for xxxx_db_1  Cannot start service db: b'driver failed programming external connectivity on endpoint xxxx_db_1 (849e14279bfc5461a0a142fb24b7581b72a2bf962abbd0fa09af529ccf1f7f1c): Bind for 0.0.0.0:5432 failed: port is already allocated'
    
  • 필요한 경우에만
    script/bootstrap 실행 시 yarninstall//를 실행하기 위해 로그가 나타났습니다. 다음 동작을 수행합니다
  • docker-compose run rails yarn install --check-files
    
    필요한 경우에만
    위 명령을 실행하면 다음 명령을 실행하기 위해 로그에 출력이 있기 때문에 실행합니다
    다음은 bash에 로그인한 후 실행된 것입니다
    docker-compose run rails bash
    curl --compressed -o- -L https://yarnpkg.com/install.sh | bash
    
  • Rails 환경 구축 후 부팅 확인
  • docker-compose up
    

    Refinery 환경 제작


    기존 Rails 프로젝트에 RefineryCMS 추가

  • 공식 사이트의 With an existing Rails app 참조
  • Gemfile에 다음 내용 추가
  • gem 'refinerycms'
    gem 'refinerycms-authentication-devise' # 認証機能が必要な場合のみ
    gem 'refinerycms-wymeditor'  # WYMエディタ 無くてもRefineryCMSは動くっぽい
    
  • bundle install 실행
  • docker-compose run rails bundle install
    
    실행 후 다음 상태가 지속되어 하룻밤이 지나도 완성하지 못했다
    bundle install
    The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`.
    Fetching gem metadata from https://rubygems.org/..........
    Fetching gem metadata from https://rubygems.org/.
    Resolving dependencies..................................................
    
    control+c로 강제로 종료하고 몇 개의 명령을 실행한 후
    bundle install을 다시 실행한 후 정상적으로 종료됩니다.
    지령 집행을 통해 해결되었는지, 아니면 시간을 거쳐 해결되었는지 원인이 불분명하다.
    이때 실행된 명령은 다음과 같다.
    docker-compose run rails bash
    bash를 시작하거나 실행하지 않습니다.
    gem install bundler --pre
    gem install 'refinerycms' #追加したgemの個別インストール
    gem install 'refinerycms-authentication-devise' #追加したgemの個別インストール
    gem install 'refinerycms-wymeditor' #追加したgemの個別インストール
    bundle update
    
  • 여러 개의gem에 대해서도 이런 오류가 발생했다
  • xxxxxx because its extensions are not built.  Try: gem pristine xxxxxx
    
    다음 명령으로 취소됨
    gem pristine --all
    
  • 기존 Rails 프로젝트에 RefineryCMS 기능 부여(마이그레이션 등)
  • docker-compose run rails rails generate refinery:cms --fresh-installation
    
  • rails를 잠시 시작하고postgresql의 오류를 출력
  • $ docker-compose up
      :
    PG::ConnectionBad (could not connect to server: Connection refused
    rails_1  |      Is the server running on host "db" (127.0.0.1) and accepting
    rails_1  |      TCP/IP connections on port 5432?
    rails_1  | could not connect to server: Cannot assign requested address
    rails_1  |      Is the server running on host "db" (::1) and accepting
    rails_1  |      TCP/IP connections on port 5432?
    
    오류 정보로 검색, 참조사이트 축소판 그림
    다음 파일 수정
    /etc/hosts
    #before
    127.0.0.1       localhost
    ↓
    #after
    127.0.0.1       localhost db
    
    실행rails db:migrate:reset
    "데이터 directory의 초기화 버전은 호환되지 않는 버전입니다."
    이런 로그가 출력됐어요.
    자신의 환경 버전에 따라 아래 파일의db 이미지를 수정했습니다
    docker-compose.yml
    # before
      db:
        image: "postgres:10.3"
    ↓
    # after
      db:
        image: "postgres:11.5"
    
    
  • 이전된 리셋 및 피드
  • docker-compose run rails rails db:migrate:reset
    docker-compose run rails rails db:seed      
    
  • 다음 명령으로 시작하여 http://localhost:3000/에 Refinery CMS의 기본 화면
  • 을 표시합니다.
    docker-compose up
    

  • 방문http://localhost:3000/refinery/
    서명 화면으로 이동
    → 옳게 하다

  • 이 상태에서 원격으로 누르기

  • rails 프로젝트의 docker 이미지에 대한 clone
    원격 창고의 URL을 변경하고 싶습니다
  • 앞으로 사용할 원격 창고가 제작되었습니다.
    다른 폴더에 들어가면지금까지 개발된 폴더의git/config 덮어쓰기
  • 위 명령을 완료한 후 다음 명령을 실행합니다
  • .
    git add .
    git commit -am "xxxxx"
    git push
    
    git push 실행 중 다음 오류 발생
     ! [rejected]        master -> master (fetch first)
    error: failed to push some refs to 'https://[email protected]/takanori_yoshioka/lambellweb.git'
    hint: Updates were rejected because the remote contains work that you do
    hint: not have locally. This is usually caused by another repository pushing
    hint: to the same ref. You may want to first integrate the remote changes
    hint: (e.g., 'git pull ...') before pushing again.
    hint: See the 'Note about fast-forwards' in 'git push --help' for details.
    
    로컬 창고를 원격 창고에 강제로 저장
    (로컬 창고의 내용을 원격 창고에 덮어쓰기)
    git push -f origin master 
    

    끝맺다

  • 향후 RefineryCMS는 확장 기능(engine의 refinerycms)으로
    다른 글로 추가 방법을 쓰려고 합니다.

    여기 써있어요.
    https://qiita.com/bonny_d/items/2df7e4c3c246e7290215
  • 좋은 웹페이지 즐겨찾기