GemSorter
GemSorter is a simple gem to sort the contents of your Gemfile alphabetically while preserving comments and group structure. It helps maintain a clean and organized Gemfile.
Features
- Sorts gems alphabetically.
- Preserves comments and their association with gems.
- Maintains group structure in the Gemfile.
- Optionally creates a backup of the original Gemfile.
- Update the comments of the gems based on their descriptions.
Installation
Add the gem to your project's Gemfile
:
gem "gem_sorter"
or install it globally:
gem install gem_sorter
Usage
Once installed, you can use the provided Rake task to sort your Gemfile:
rake gemfile:sort
You can also run the gem_sorter globally, without needing to add it to your Gemfile:
rake -r gem_sorter gemfile:sort
Options
-
backup
: Passtrue
to create a backup of your Gemfile asGemfile.old
before sorting. -
update_comments
: Passtrue
to update the comments of the gems based on their descriptions. -
update_versions
: Passtrue
to update the versions of the gems based on the lockfile.
Example:
rake gemfile:sort[true,true,true]
This will sort your Gemfile, create a backup, and update comments and versions.
Options File
Create a file in the root of your project called gem_sorter.yml
-
backup
: Passtrue
to create a backup of your Gemfile asGemfile.old
before sorting. -
update_comments
: Passtrue
to update the comments of the gems based on their descriptions. -
update_versions
: Passtrue
to update the versions of the gems based on the lockfile. -
ignore_gems
: Pass an array of GEMs you want to ignore versions and comments -
ignore_gem_versions
: Pass an array of GEMs you want to ignore versions -
ignore_gem_comments
: Pass an array of GEMs you want to ignore comments
Example:
backup: true
update_comments: true
update_versions: false
ignore_gems:
- byebug
- discard
ignore_gem_versions:
- rspec
ignore_gem_comments:
- otpor
This will sort your Gemfile, create a backup, and update comments and versions.
Example
Input Gemfile
source "https://rubygems.org"
# Framework
gem "rails"
gem "puma", "~> 5.3"
group :development do
gem "dotenv-rails"
gem "pry"
end
Output Gemfile
source "https://rubygems.org"
# A Ruby/Rack web server built for parallelism.
gem "puma", "~> 5.3"
# Full-stack web application framework.
gem "rails", "~> 8.0", ">= 8.0.1"
group :development do
# Autoload dotenv in Rails.
gem 'dotenv-rails', '~> 3.1', '>= 3.1.7'
# A runtime developer console and IRB alternative with powerful introspection capabilities.
gem "pry"
end
Development
To contribute to this project:
- Clone the repository:
git clone https://github.com/renan-garcia/gem_sorter.git
- Navigate to the project directory:
cd gem_sorter
- Install dependencies:
bundle install
- Run the tests:
rspec
Contributing
We welcome contributions! Here's how you can help:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/my-new-feature
- Commit your changes:
git commit -m "Add a new feature"
- Push to the branch:
git push origin feature/my-new-feature
- Open a pull request.
Acknowledgments
Special thanks to the Ruby community for their guidance and support!