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.
- 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.
- Optionally converts single quotes to double quotes in gem declarations.
- Optionally removes version constraints from gems while preserving other parameters.
Add the gem to your project's Gemfile
:
gem "gem_sorter"
or install it globally:
gem install gem_sorter
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
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.use_double_quotes
: Passtrue
to convert single quotes to double quotes in gem declarations.remove_versions
: Passtrue
to remove version constraints from gems while preserving other parameters likerequire
orplatforms
. This option takes precedence overupdate_versions
if both are enabled.
Example:
rake gemfile:sort[true,true,true,true,true]
This will sort your Gemfile, create a backup, update comments and versions, convert single quotes to double quotes, and remove version constraints.
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.use_double_quotes
: Passtrue
to convert single quotes to double quotes in gem declarations.remove_versions
: Passtrue
to remove version constraints from gems while preserving other parameters likerequire
orplatforms
. This option takes precedence overupdate_versions
if both are enabled.ignore_gems
: Pass an array of GEMs you want to ignore versions and commentsignore_gem_versions
: Pass an array of GEMs you want to ignore versionsignore_gem_comments
: Pass an array of GEMs you want to ignore comments
Example:
backup: true
update_comments: true
update_versions: false
use_double_quotes: true
remove_versions: true
ignore_gems:
- byebug
- discard
ignore_gem_versions:
- rspec
ignore_gem_comments:
- otpor
This will sort your Gemfile, create a backup, update comments, remove version constraints, and ignore specific gems for different operations.
source "https://rubygems.org"
# Framework
gem "rails"
gem "puma", "~> 5.3"
gem "thruster", "~> 0.1.13", require: false
gem "countries", "~> 7.1", ">= 7.1.1"
gem "tzinfo-data", platforms: %i[ windows jruby ]
group :development do
gem "dotenv-rails"
gem "pry"
end
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"
gem "thruster", "~> 0.1.13", require: false
gem "countries", "~> 7.1", ">= 7.1.1"
gem "tzinfo-data", platforms: %i[ windows jruby ]
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
source "https://rubygems.org"
# A Ruby/Rack web server built for parallelism.
gem "puma"
# Full-stack web application framework.
gem "rails"
gem "thruster", require: false
gem "countries"
gem "tzinfo-data", platforms: %i[ windows jruby ]
group :development do
# Autoload dotenv in Rails.
gem "dotenv-rails"
# A runtime developer console and IRB alternative with powerful introspection capabilities.
gem "pry"
end
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
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.
Special thanks to the Ruby community for their guidance and support!