iT邦幫忙

2023 iThome 鐵人賽

DAY 4
0
Software Development

Rails 開發,每日一套件介紹! 系列 第 4

Day 4: 程式開發的警備總隊 - rubocop

  • 分享至 

  • xImage
  •  

Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發每日一套件第四天,讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件吧!
相信跟著我一起走完這段旅程,您也能建立出自己的常用套件庫,甚至鑑別什麼是好的套件喔!

Day 4: Rubocop

今天來講一下,在我們做專案中,很常用但有時候也有點討人厭的套件 - rubocop。套件名字源自於知名美國影集 - 機器戰警(有收看過的人,會直接暴露年紀XD)。

這是一個非常嚴格的語言格式規範套件(個人認為比較注重在格式的規範,至於可讀性,則需要用心一點去做客製化)。簡單來說,他會去糾正你的縮排、空白行、註解、程式邏輯的行數限制,gemfile裡的字母排序,甚至schema都會一併做檢查。就想像你有一位有強迫症的朋友,無時無刻在旁邊吹哨子。

不過我認為這個套件在團隊專案開發上,是非常有幫助的。間接強迫所有人都按照一個固定的格式規範來撰寫程式碼。
強迫症患者如我,其實是還蠻愛的,Rubocop + Headwind + Conventional Commits 三合一,看起來超舒爽!

所以你有隊友的縮排總是讓你很困擾嗎?
啟用rubocop吧!

安裝方式:

首先在終端機輸入:

bundle add rubocop

然後在進入專案資料夾下輸入

rubocop

然後就會看到警察開始工作了!如下圖:

這裡表示整個專案中,它檢查到 151 個格式不符合定義規範! 其中有 127 個是它可以自動修正的
要啟用自動修正,請輸入

rubocop -A

如前面所述,這個套件的好處是強迫規範所有人的格式。你可以規定所有團隊的人都需要跑 rubocop才能push。但它也不是沒有壞處,壞處是如果規範設定的不夠好,或是根本沒有設定,你會被改的有點一愣一愣的,哈哈。甚至有時候沒跑沒事,一跑就壞了。

所以要先細心點,對它做一些設定。至於你想要怎麼規範,這個就見仁見智了。
以下提供我個人的基本規範設定,提供參考。
寫在.rubocop.yml的檔案中:

AllCops:
  DisplayCopNames: true
  DisplayStyleGuide: true
  IndentationWidth: 2
  Exclude:
    - db/schema.rb
    - db/seeds.rb
    - db/migrate/**/*
    - bin/**/*
    - Gemfile
    - Gemfile.lock
    - vendor/**/*
    - config/**/*

Style/Documentation:
  Enabled: false

細節在文件中都有詳述,這裡就不囉說。
簡單來說,縮排2,另外排除schema、seed、migration檔、bin資料夾、gemfile、gemfile.lock、vender、config這些,不讓警察改。因為這邊有我自己的想法,我不想讓他改。大概是這樣,每個專案不同會在再做微調。

以上,一樣也是非常簡單,但是又實用的套件,專案必備蒐藏!
如果真的客製化還有什麼不理解的地方,也歡迎留言詢問喔!


上一篇
Day 3: 比 id 更友善的 id - friendly_id
下一篇
Day 5: 你的站內圖書館員 - ransack
系列文
Rails 開發,每日一套件介紹! 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言