Rails 6에서 인증 승인 게시판 API 구축 #2 git과 rubocop 도입

Rails 6에서 인증 승인 게시판 API 구축 #1 환경 구축

Github으로 올리기



전회의 계속으로부터.
우선 움직이는 곳까지 갔으므로 Github에 push합시다.

New repository를 선택합니다.

그 후 적당한 이름을 붙여 작성.
다른 사람에게서 소스 코드를 보지 않으려면 Private. 문제 없으면 Public에.



Cloud9는 기본적으로 git이 들어 있기 때문에 그대로 git 명령을 사용할 수 있습니다.
$ git add -A
$ git commit -m 'initial commit'
$ git remote add origin https://github.com/{YOUR_ACCOUNT}/{YOUR_REPOSITORY}.git
$ git branch -M master
$ git push -u origin master

위 명령의 YOUR_ 부분은 방금 만든 리포지토리에 작성되었으므로 참조하십시오.

키 쌍을 만들고 공개 키를 Github에 등록



위의 대응이라면 push 할 때마다 Github의 사용자 ID와 비밀번호를들을 수 있습니다.
$ ssh-keygen -t rsa

Enter 키 연타로 키 페어를 만듭니다.
$ cat ~/.ssh/id_rsa.pub 

로 표시되는 문자열이 공개 키이므로 복사합니다.

Github로 이동하여 오른쪽 상단의 자신의 아이콘에서 『Settings』→『SSH and GPG keys』→『New SSH key』로 천이.
타이틀은 알기 쉬운 것을 붙여, key에 방금 전의 공개키를 붙여 보존.

다만, 이것이라도 push시에 아직 ID 패스를 들을 수 있을 것이다.
$ git remote set-url origin git@github.com:{YOUR_ACCOUNT}/{YOUR_REPOSITORY}.git

그렇다면 OK.
이제 다음 번부터 push 또는 pull 시에 ID 경로를 매번 들을 수 없게 됩니다.

참고 : GitHub에서 ssh를 연결하는 방법 ~ 공개 키 / 개인 키 생성에서 ~

test 디렉토리 지우기



이번에는 RSpec을 사용하여 테스트를 구현하기 때문에 minitest 용 test 디렉토리를 지 웁니다.
$ git rm -r test/

rubocop 넣기



우선 정적 해석해 주는 rubocop을 넣자.
라고 하는 것도 코딩 규약을 체크해 주는 gem입니다만, 나중에 넣으면 코딩 규약에 반하는 지적이 대량으로 나와 손을 잡을 수 없게 되기 때문입니다.

Gemfile
...

+ gem 'rubocop-rails'

...

설치
$ bundle

rubocop 설정 파일 만들기



.rubocop.yml
AllCops:
  Exclude:
    - bin/*
    - db/schema.rb

# 日本語コメント許可
AsciiComments:
  Enabled: false

# ダブルクォーテーションに統一
StringLiterals:
  EnforcedStyle: double_quotes

애플리케이션의 루트 디렉토리(/home/ec2-user/environment/bbs)에 위치하십시오.
파일 이름의 시작 부분에 점을 붙이는 것을 잊지 마십시오.

rubocop 지적 부분을 고치기


$ rubocop -a

실행하면 40개 전후의 에러를 토합니다만, 거의 모두 이하 에러의 것.
C: Style/FrozenStringLiteralComment: Missing frozen string literal comment.

이것은

각 Ruby 파일의 첫 번째 줄에 추가
+ # frozen_string_literal: true
+

이제 괜찮습니다.
의미하는 것은 Ruby라고 문자열이 디폴트로 뮤터블이지만, 의도하지 않은 결함을 낳거나 하기 때문에 freeze 해 이뮤터블로 하면 좋지
Ruby3에서는 기본적으로 이뮤터블이 ​​되는 것이 정해져 있어, 거기에 대비해 이 기술을 넣어 두면 파일중의 캐릭터 라인이 이뮤터블이 ​​될 것이다

적인 느낌입니다.

수십 파일을 열고 편집 저장하고 ...하는 것이 귀찮다면,
# Gemfileの先頭に # frozen_string_literal: trueを追記
$ sed -i '1s/^/# frozen_string_literal: true\n\n/' Gemfile

이렇게하면 파일의 시작 부분에 추가 할 수 있습니다.
db/* 와 같이 지정하면 디렉토리 일괄도 할 수 있습니다 (조금 위험).

원래도 아이도 없는 이야기를 하면, 튜토리얼의 범위라면 rubocop로 이 체크 무효로 해 버려도 좋습니다.
그 경우에는

.rubocop.yml
...

+ Style/FrozenStringLiteralComment:
+   Enabled: false

그리고 추가하십시오.
다만 앞서 언급했듯이 Ruby3에서는 디폴트로 이뮤터블이 ​​되므로, 향후 신규 어플리케이션을 만들기 시작한다면 넣어 두어야 할 것입니다.

그리고는 이하 에러를 망칠 뿐입니다.
C: Style/Documentation: Missing top-level class documentation comment.

app/mailers/application_mailer.rb
app/models/application_record.rb
config/application.rb
의 3 파일로 발생하고 있을 것입니다만, 클래스의 다큐멘테이션이 없는 때에 나오는 에러입니다.

config/application.rb

 module Bbs
+  #
+  # 設定ファイル
+  #
   class Application < Rails::Application

와 같이 클래스 정의 전에 주석을 추가합시다.

모두 수정하고,
Inspecting 26 files
..........................

26 files inspected, no offenses detected

처럼 오류가 없어지면 OK입니다.

계속



Rails 6에서 인증 승인 게시판 API 구축 #3 RSpec, FactoryBot 도입하여 post 모델 만들기
연재 목차로

좋은 웹페이지 즐겨찾기