gregschmit/rails-rest-framework

View on GitHub
Gemfile

Summary

Maintainability
Test Coverage
source "https://rubygems.org"

# We force the Gem version to "0.dev" so it doesn't keep changing inside the `Gemfile.lock`.
ENV["RRF_OVERRIDE_VERSION"] = "0.dev"
gemspec

# Support setting ruby version from env, and default to `.ruby-version` file.
ruby ENV["CUSTOM_RUBY_VERSION"] || File.read(
  File.expand_path(".ruby-version", __dir__),
).strip.split("-")[1]

# Support testing against multiple Rails versions.
RAILS_VERSION = Gem::Version.new(
  ENV["RAILS_VERSION"] || File.read(File.expand_path(".rails-version", __dir__)).strip,
)
gem "rails", "~> #{RAILS_VERSION}"
gem "rake"
gem "sqlite3", RAILS_VERSION >= Gem::Version.new("7.9") ? ">= 2" : "~> 1.4"
gem "puma"

# Only Rails >=7.1 gems.
if RAILS_VERSION >= Gem::Version.new("7")
  gem "kamal"
  gem "ransack", ">= 4.0"
  gem "solid_queue"
end

# Include `active_model_serializers` for custom integration (Rails >=6 only).
# TODO: Disabled in Rails 8 because AMS seems to be broken on a frozen object mutation error.
if RAILS_VERSION >= Gem::Version.new("6") && RAILS_VERSION <= Gem::Version.new("7.9")
  gem "active_model_serializers", "0.10.14"
end

# Include `translate_enum` for custom integration.
gem "translate_enum"

# Either test with Sprockets or Propshaft, or set to nil to use external assets.
ENV["ASSET_PIPELINE"] = RAILS_VERSION >= Gem::Version.new("7.9") ? "propshaft" : nil
if ENV["ASSET_PIPELINE"] == "sprockets"
  gem "sprockets-rails"

  # Purely to test a failure in sass where if a css variable refers to a `url`, then it raises an
  # `undefined method 'size' for nil:NilClass` exception in: `sass-3.7.4/lib/sass/util.rb:157`.
  gem "sass-rails", "5.1"
elsif ENV["ASSET_PIPELINE"] == "propshaft"
  gem "propshaft"
end

if ENV["ASSET_PIPELINE"] && RAILS_VERSION >= Gem::Version.new("7.9")
  # gem "mission_control-jobs"
end

gem "kramdown"
gem "kramdown-parser-gfm"

# Sentry
gem "stackprof"
gem "sentry-rails"

group :production do
  gem "cloudflare-rails"
end

group :development do
  gem "better_errors", "2.9.1"  # Avoid `sassc` dependency.
  gem "binding_of_caller"
  gem "byebug"
  gem "foreman"
  gem "pry-rails"
  gem "rubocop-shopify", require: false
  gem "web-console"

  # Vendoring external assets.
  gem "httparty"

  # Profiling
  gem "rack-mini-profiler"

  if RAILS_VERSION <= Gem::Version.new("7.2")
    gem "bullet"
  end
end

group :test do
  gem "minitest"
  gem "simplecov", require: false
  gem "simplecov-lcov", "0.8.0", require: false
end