ubicloud/Gemfile
Jeremy Evans 5042633bb0 Support table-based model browsing and model searching on admin site using AutoForme
Table-based model browsing can be friendlier than the unordered list display
currently used on the admin site. However, you need to be careful to not
introduce N+1 queries when using table-based browsing.

AutoForme is a library that builds on top of Forme (already used on the
admin site) and provides the ability to browse and search the models in a
way that avoids N+1 queries.  It's quite flexible, requiring only a few
lines of configuration code per model to have it display and allow
searching of the columns desired.

AutoForme also supports CRUD actions for models, but those are currently
disabled, and it is only used for the tabular display and searching.
It also supports downloading of data in CSV format (both in browse and
search mode), which can be useful with external analysis tools.

One potential regression with the AutoForme based browsing and searching
is the use of offsets for pagination, instead of using a filter. If this
becomes problematic, it's possible to add filter-based pagination to
AutoForme.

While it is possible to implement table-based browsing without using
AutoForme, it would require reimplementing parts of AutoForme, and I
think using AutoForme will result in smaller and simpler code in the
long run.

Currently, this only implements the table-based browsing for Firewall
as a proof of concept. We can expand it to other models in the future.
2025-09-18 02:29:42 +09:00

89 lines
1.8 KiB
Ruby

# frozen_string_literal: true
source "https://rubygems.org"
# Update ruby version in Dockerfile and .tool_versions when updating this
ruby "3.4.5"
gem "acme-client"
gem "argon2"
gem "argon2-kdf"
gem "autoforme"
gem "aws-sdk-ec2", "~> 1.512"
gem "aws-sdk-iam"
gem "aws-sdk-s3"
gem "bcrypt_pbkdf"
gem "committee", ">= 5.5.4"
gem "countries"
gem "ed25519"
gem "erubi", ">= 1.5"
gem "excon"
gem "forme"
gem "jwt"
gem "mail"
gem "net-ssh"
gem "netaddr"
gem "nokogiri"
gem "octokit"
gem "omniauth-github"
gem "omniauth-google-oauth2"
gem "pagerduty", ">= 4.0"
gem "prawn"
gem "prawn-table"
gem "pry"
gem "puma", ">= 6.2.2"
gem "rack-unreloader", ">= 1.8"
gem "rake"
gem "refrigerator", ">= 1"
gem "reline" # Remove it when pry adds it as a dependency
gem "roda", ">= 3.96"
gem "rodauth", ">= 2.40"
gem "rodauth-omniauth", github: "janko/rodauth-omniauth", ref: "477810179ba0cab8d459be1a0d87dca5b57ec94b"
gem "rodish", ">= 2.0.1"
gem "rotp"
gem "rqrcode"
gem "sequel", ">= 5.96"
gem "sequel_pg", ">= 1.8", require: "sequel"
gem "shellwords"
gem "stripe"
gem "tilt", ">= 2.6.1"
gem "warning"
gem "webauthn"
group :development do
gem "awesome_print"
gem "by", ">= 1.1.0"
gem "cuprite"
gem "foreman"
gem "pry-byebug"
gem "rackup"
end
group :rubocop do
gem "rubocop-capybara", "< 2.22"
gem "rubocop-erb"
gem "rubocop-performance"
gem "rubocop-rake"
gem "rubocop-rspec"
gem "rubocop-sequel"
gem "standard", ">= 1.24.3"
end
group :lint do
gem "brakeman"
gem "erb-formatter", github: "ubicloud/erb-formatter", ref: "df3174476986706828f7baf3e5e6f5ec8ecd849b"
end
group :test do
gem "capybara"
gem "capybara-validate_html5", ">= 2.1"
gem "pdf-reader"
gem "rspec"
gem "simplecov"
gem "turbo_tests"
gem "webmock"
end
group :test, :development do
gem "sequel-annotate"
end