Organize Gemfile with categorized sections and alphabetized gems
Reorganizes Gemfile with categorized sections, comment headers, and alphabetized gems.
/plugin marketplace add majesticlabs-dev/majestic-marketplace/plugin install majestic-rails@majestic-marketplace[optional: path/to/Gemfile]gemfile/Reorganize a Gemfile with categorized sections, comment headers, and alphabetized gems within each section.
$ARGUMENTS (default: Gemfile in current directory)
Read the Gemfile and identify:
source "...")ruby ...)Assign each gem to a category based on these mappings:
Server
puma, unicorn, thin, falconGraphQL
graphql*, apollo*, graphiql*Databases
pg*, mysql*, sqlite*, redis*, mongo*activerecord*, active_record*, sequelconnection_pool, with_advisory_lockstore_model, attr_jsonBackground Jobs
sidekiq*, resque*, delayed_job*, good_job, solid_queueactivejob, active_job*Authentication & Authorization
devise*, omniauth*, doorkeeper*, rodauth*pundit, cancan*, action_policyjwt, bcryptFeature Flags
flipper*, rollout, unleashCaching
solid_cache, dalli, redis-rails, bootsnapRails Extensions & Tools (default category)
aasm, state_machines*friendly_id, hashid*, sequencedpagy, kaminari, will_paginateparanoia, discard, acts_as_paranoidaudited, paper_trail, logidzerack-*, lograge**-rails gemsMonitoring
appsignal, newrelic*, datadog*, scout_apmrollbar, sentry*, bugsnag, honeybadgerjudoscale*, rails_autoscale*Upload & Storage
shrine, carrierwave, paperclip, active_storage*aws-sdk*, google-cloud-storage, fog*image_processing, mini_magick, ruby-vipsExternal APIs & Services
stripe, braintree, paddletwilio*, sendgrid*, mailgun*, postmark*slack-*, octokitsavon, httparty, faraday, typhoeusintacct, quickbooks*, xero*Ruby Extensions
amazing_print, awesome_printoj, multi_json, alba, blueprinterdry-*, hashie, hash_dotcountries, money*, phonelibchronic, ice_cube, business_time, holidaysshale, nokogiri, oxPDF Generation
prawn*, wicked_pdf, pdfkit, hexapdfttfunk, matrixXLSX/CSV Generation
caxlsx, axlsx*, roo*, spreadsheetcsv, smarter_csvFrontend Dependencies
turbo-rails, stimulus-rails, hotwire*importmap*, jsbundling*, cssbundling*propshaft, sprockets*tailwindcss*, bootstrap*view_component*inertia*Admin & Backoffice
avo*, activeadmin, rails_admin, administratetrestleTesting (usually in group)
rspec*, minitest*, capybara*factory_bot*, faker, ffakervcr, webmock, shoulda*simplecov, codecovdatabase_cleaner*Development Tools (usually in group)
rubocop*, standard, brakemanannotate, bullet, pry*, byebug, debugletter_opener*, guard*ruby-lsp*, solargraphOutput format:
source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby file: '.ruby-version' # or specific version
gem 'rails', '~> 7.x'
# Server
#########################
gem 'puma'
# Databases
#########################
gem 'pg'
gem 'redis'
# [Continue with each non-empty category...]
# Groups at bottom
group :production do
# ...
end
group :development, :test do
# ...
end
group :development do
# ...
end
group :test do
# ...
end
group :tools do
# ...
end
github:, source:, require:, branch:, path:'~> 1.0', '>= 2.0'gem 'foo' # commentgit_sourceGemfile.backup before modifyingAfter organizing, display:
Organized 87 gems into 15 categories:
- Server: 1 gem
- Databases: 6 gems
- Background Jobs: 4 gems
...
Uncategorized gems placed in 'Rails Extensions & Tools':
- custom_gem
- another_gem
Use AskUserQuestion to confirm before applying: