G.frege를 너무 사랑하는 holy가...

[k-holdem-rails] local server

[ document summary ]
    Title: [k-holdem-rails] local server
    date: 2023 10.16
    content: kholdem source 분석

개요

k-holdem을 처음 설치하고 local에서 실행하는 것까지 다룬다. 대충 rough하게 정리한 note지만, 나중에 다시 정리할것이다. 여튼 처음 설치하는 사람들에게 guide가 될 수 있을 것이다.

git project clone

해당 repo를 clone한다.

Figure 1: clone

Figure 1: clone

아래 처럼 clone한다.

git clone git@github.com:whitebrew/kholdem-server.git

PS: 나는 postfix multiple github을 사용하기 때문에, github.com에 postfix를 붙여준다. email에 postfix붙여주는 것과 비슷하다. github.com은 하나의 host주소인데, 여러개의 account를 사용하기 때문에 postfix를 붙여줘서 구분한다.

git clone git@github.com-hoyoul:whitebrew/kholdem-server.git

local실행을 위한 prerequisites

asdf 설치

참고 , asdf는 node.js와 ruby의 version관리를 통합적으로 할 수 있다. rvm이나 rbenv 을 해도 된다. 나는 이번에 asdf로 ruby버전을 관리하기로 했다. python이나 node도 관리할 수 있기 때문이다. asdf 공식 page에 나온 방식으로 설치할 수도 있고, gorails에서 설치한 방법으로 설치할 수도 있다. 둘 중 하나의 방식을 선택한다. 나는 asdf공식 page방식으로 설치했다.

asdf 공식 page

prerequisite이 있다.

brew install coreutils curl git

그리고 asdf를 설치한다.

brew install asdf

asdf를 shell path에 등록한다.

echo -e "\n. $(brew --prefix asdf)/libexec/asdf.sh" >> ${ZDOTDIR:-~}/.zshrc

gorails

cd
git clone https://github.com/excid3/asdf.git ~/.asdf
echo '. "$HOME/.asdf/asdf.sh"' >> ~/.zshrc
echo '. "$HOME/.asdf/completions/asdf.bash"' >> ~/.zshrc
echo 'legacy_version_file = yes' >> ~/.asdfrc
exec $SHELL

ruby 설치

plugin 설정

asdf에서 plugin을 설치한다. asdf가 언어에 대한 통합버전 관리라서 언어를 plugin으로 지정해줘야 한다.

asdf plugin add ruby

ruby version 설치

이제 asdf로 ruby를 설치할 수 있다. gorails에선 3.2.2를 추천한다.왜냐면 rails 7.0.6을 안정화 버전으로 보고, 해당 rails에 맞는 ruby버전이 3.2.2기 때문이다. gemfile에 보면, k-holdem project는 3.2.1이다. 3.2.1, 3.2.2 둘다 설치하자.

asdf install ruby 3.2.2
asdf install ruby 3.2.1
  • 사용할 ruby를 system에 설정하기로 하자. 어차피 3.2.1만 사용할거라서 system에 설치하기로 한다.
    asdf global ruby 3.2.1
    # Update to the latest Rubygems version
    gem update --system
    

ruby version 확인

제대로 설치되었는지 ruby version을 확인한다.

which ruby
#=> /Users/username/.asdf/shims/ruby
ruby -v
#=> 3.2.2

rails 설치

gorails는 7.0.6을 추천하지만, project는 7.0.8 이상을 설치하기 때문에 맞춰서 설치하자.

gem install rails -v 7.0.8

만일 permission문제가 있다면, sudo를 붙여서 사용한다. 나는 문제가 없었다.

rails -v

제대로 설치되었는지 확인 해보자. 7.0.8이 나오면 된다.

database 설정

postgresql

  • postgresql 설치와 실행

    gemfile을 보면 pg가 설치되어 있고, version은 1.0이상이라서 상관없이 설치해도 된다. 현재 14가 stable버전인듯 하다.

    brew tap homebrew/core
    brew install postgresql
    

    server는 db를 이용하기 때문에 system 시작과 함께 실행 시킨다. 나는 원래 직접 필요할 때만 실행 시켰지만, 상관없다. 아래와 같이 하는게 편하다.

    brew services start postgresql
    

    아래처럼 login item에 등록된다.

    Figure 2: login item

    Figure 2: login item

local에서 실행

local에서 rails s로 바로 server를 실행시키면 안된다. project가 사용하는 gem을 설치하고, db도 처리를 해줘야 한다. db가 텅비워져 있기 때문이다.

bundler

project의 root에서

bundle install

하면 gemfile에 있는 gem들이 설치된다.

db 처리

database 생성

postgresql에 database를 만든다. database를 만들어야 안에 table을 만들 수 있다. database를 만들때, db에 접속해서 sql을 사용해서 수동으로 만들어도 되지만, rails에는 db:create란 명령어가 있다. db:create는 rails root project의 config/database.yml에 지정된 database를 참조해서 database를 자동으로 만든다. database이름은 kholdem_server_development다.

Figure 3: db1

Figure 3: db1

아래는 rails명령어를 썼지만, rake를 사용해도 된다.

rails db:create

schema load

처음 db를 setting하면 schema를 load하면 된다. 기존의 table이 있다면 migrate만 하면 되겠지만, 나는 어차피 database만 있고 table이 하나도 없기 때문에 schema:load를 해준다. schema는 table layout의 최종버전으로 보면 된다.

rails db:schema:load

db 확인

나는 mysql을 사용했기 때문에 querious라는 mysql전용 db client를 썼다. postgresql이라서 TablePlus를 사용하기로 했다. 우선 설치를 한다.

brew install --cask tableplus

그리고 다음과 같이 설정한다.

Figure 4: db_set1

Figure 4: db_set1

Figure 5: db_set2

Figure 5: db_set2

Figure 6: db_set3

Figure 6: db_set3

그리고 posgresql에서 접속해서 table을 확인한다.

Figure 7: table1

Figure 7: table1

record는 없지만, table이 만들어진것을 확인할 수 있다. fixture를 사용할 수도 있지만, 우선은 이것만 하고 넘어간다.

실행

rails s

Figure 8: server1

Figure 8: server1

server가 local에서 실행되었음을 알 수 있다. browser에서 연결을 해보자.

Figure 9: error1

Figure 9: error1

Oauth문제 때문이다. routes.rb에 보면 omni-auth처리를 해주고 있다. rails와 flutter에서 이부분을 좀더 봐야 할듯하다.