[ Rails on Heroku ] 간단한 루비 레일즈 앱 구성 및 Heroku에 배포하기


[ Rails on Heroku ] 자주 사용하는 heroku 명령어 정리 (https://www.hahwul.com/2019/04/what-is-heroku.html) [ Rails on Heroku ] 간단한 루비 레일즈 앱 구성 및 Heroku에 배포하기 (https://www.hahwul.com/2019/04/ruby-on-rails-distribute-heroku.html) [ Rails on Heroku ] Heroku란? 빠르게 환경 구성하기 (https://www.hahwul.com/2019/04/favorite-command-heroku.html)


이전 포스팅에서 heroku 환경 세팅을 했으니 앱을 만들고 배포해봅시다. 개발은 RubyMine 으로 진행할테니 RubyMine에서 프로젝트를 하나 만들겠습니다. (vim으로 하시는분은 그냥 명령어로 구성해주시믄 됩니다)

or

rails new yourapp

Make Rails App

대충 간단하게 앱이랑 페이지 하나 만들어봅시다. 우선 컨트롤러 하나 만들어주시고..

rails g controller hahwul-web

내용을 보여줄 View도 만들어줍시다.

vim views/hahwul-web/index.erb

내용은 대충…

asdf

마지막으로 route.rb에서 view 경로를 추가해주어 페이지 접근이 가능하도록 설정해줍시다.

config/route.rb

Rails.application.routes.draw do
  get 'hahwul-web/index'
end

이정도 하면 static한 페이지 구성은 끝나네요. 나중에 기능 붙이실 때 controller에 기능 넣어주시면 됩니닷. 아무튼, 로컬에서 실행하고 웹 접근하면..

잘 나오네요.

Rails app heroku에 배포

자 그럼 이제 rails app을 heroku로 배포해봅시다. 배포에 앞서 하나 꼭 알고가야할 내용이 있는데 heroku는 무료 플랜에선 기본적으로 postgresql을 지원합니다. 그러다 보니 mysql, sqlite 등 다른 db로 설정된 경우 배포 시 에러가 날 수 있습니다.

Gemfile에 pg 설치될 수 있도록 수정해줍시다.

group :development do
  gem 'sqlite3'
end
group :production do
  gem 'pg'
end

로컬의 경우 환경 별 실행할 db도 별도로 지정해야하는데(database.yml?) heroku의 경우 배포 시 heroku가 직접 database.yml을 건드려서 설정합니다. (덕분에 우린 heroku 서버의 db password를 모르게되죠.) 그리서 별도로 설정할게 없습니다.

보통 git에서 작업할 때 이 다음 git push로 올리는데, 대신 heroku cli를 통해 heroku쪽 git으로 올려야합니다.

heroku create

이렇게되면 .git 내 정보가 github가 아닌 heroku git을 바라보게 됩니다. 그다음 배포하듯이 해주시면..

git add * ; git commit -m 'commit'
git push heroku master

했더니 루비 에러가 빡(아래에서.. solv..)

remote: ! remote: ! An error occurred while installing ruby-2.3.7 remote: ! remote: ! This version of Ruby is not available on Heroku-18. The minimum supported version remote: ! of Ruby on the Heroku-18 stack can found at: remote: ! remote: ! https://devcenter.heroku.com/articles/ruby-support#supported-runtimes remote: !

아무튼 다음 db migrate 해줍시다. (여긴 model 들어가면 필수가 되겠죠)

heroku run rails db:migrate
heroku open

이름 바꾸기

로컬에서 heroku 명령으로 create할 시 임시 이름이 붙습니다. 아래 명령어로 변경이 가능합니다.

heroku apps:rename newname

heroku apps:rename hahwul-phoenix
Renaming intense-garden-98803 to hahwul-phoenix... done

에러 해결

아까 위에서 난 에러입니다. 우선 내용을 보면 이렇습니다.

https://devcenter.heroku.com/articles/ruby-support#supported-runtimes

* 2.4.6 : patchlevel 354, Rubygems: 2.6.14.4
* 2.5.5: patchlevel 157, Rubygems: 2.7.6.2
* 2.6.2: patchlevel 33, Rubygems: 3.0.3

아… heroku에서 Ruby의 최소 지원 버전이 2.4.6부터입니다.. 전 2.3.7에서 진행했었구요. rvm으로 2.4.6 이상으로 변경하셔서 사용하시면 됩니다. (혹시나 설치 안되셔있으면 아래 명령으로..)

curl -L get.rvm.io | bash

rvm으로 해당 버전 설치해줍시당

rvm install 2.4.6

하고 Rubymine의 preference , project의 phase별 ruby sdk를 2.4.6 이상으로 바꾸고 세팅해주시면 됩니다.(bundle ~~)


[ Rails on Heroku ] 자주 사용하는 heroku 명령어 정리 (https://www.hahwul.com/2019/04/what-is-heroku.html) [ Rails on Heroku ] 간단한 루비 레일즈 앱 구성 및 Heroku에 배포하기 (https://www.hahwul.com/2019/04/ruby-on-rails-distribute-heroku.html) [ Rails on Heroku ] Heroku란? 빠르게 환경 구성하기 (https://www.hahwul.com/2019/04/favorite-command-heroku.html)