sanemat/gemfile_arranger

View on GitHub
example.txt

Summary

Maintainability
Test Coverage
yaml setting(idea: .gemfile_arranger.yml)

block_order:
  - source
  - ruby
  - gemspec
  - gem
  - group
group:
  - production
  - staging
  - development
  - test
priority_gem:
  - rails
  - redis

idobata rule:
  https://gist.github.com/kakutani/43b9f42197ab002fcdf8

examples:
  - examples/idobata.io.Gemfile
  - examples/pigeon.tachikoma.io.Gemfile

## 説明

1. どのブロックなのかがわかる
2. ブロックごとに並べる
3. ブロックの中で、

- [x] sourceを一番上のグループ、rubyを二番目のグループ, gemspecを三番目, gemを四番目, groupを五番目に並べる
- groupの並び順設定通りに並べる
- groupの並び順設定がなければ、sortの設定で、groupを並べる
- [x] priority_gem設定があり、各group内でpriority_gemがあったら、まずその順番に並べる
- 3番目のグループから、sortの設定で、gemを並べ替える

## 懸念

- 裸のgemにgroupがついていたら?? -> { group: :development } がつくだけなので注意
- Bundler::Dsl にpublicで定義されたメソッドしか使えない ホワイトリストで良さそう(ただし動的に作る)
- dog-fooding