Hello, 我是 Weber,一位工程師,斜槓鼓手與行銷顧問。
Rails 開發每日一套件第四天,讓我們循序漸進,輕鬆認識 Rails 開發好用的 30 個套件吧!
相信跟著我一起走完這段旅程,您也能建立出自己的常用套件庫,甚至鑑別什麼是好的套件喔!
今天來講一下,在我們做專案中,很常用但有時候也有點討人厭的套件 - 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這些,不讓警察改。因為這邊有我自己的想法,我不想讓他改。大概是這樣,每個專案不同會在再做微調。
以上,一樣也是非常簡單,但是又實用的套件,專案必備蒐藏!
如果真的客製化還有什麼不理解的地方,也歡迎留言詢問喔!