Package text search now combines several strategies: exact name match,
name prefix promotion, compound word splitting ("sqlite browser" finds
"sqlitebrowser") and semantic nearest neighbor search over description
embeddings computed by an external embedding service (all-MiniLM-L6-v2,
384 dims) stored with the pgvector extension. Classic PostgreSQL
full-text search remains as fallback when the vector service is
unreachable. Gibberish queries without lexical overlap with the package
data return empty results instead of random matches.
Embeddings can be backfilled with bin/rails debshots:compute_vectors.
Also drops the unused lograge gem from the Gemfile.
178 lines
5.1 KiB
Ruby
178 lines
5.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
source 'https://rubygems.org'
|
|
|
|
# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
|
|
gem 'rails', '~> 8.1.0'
|
|
# The modern asset pipeline for Rails [https://github.com/rails/propshaft]
|
|
gem 'propshaft'
|
|
# Use sqlite3 as the database for Active Record
|
|
gem 'sqlite3', '>= 2.1'
|
|
# Use the Puma web server [https://github.com/puma/puma]
|
|
gem 'puma', '>= 5.0'
|
|
# Bundle and transpile JavaScript [https://github.com/rails/jsbundling-rails]
|
|
# gem 'jsbundling-rails'
|
|
# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
|
|
# gem 'turbo-rails'
|
|
# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
|
|
# gem 'stimulus-rails'
|
|
# Bundle and process CSS [https://github.com/rails/cssbundling-rails]
|
|
# gem 'cssbundling-rails'
|
|
# Build JSON APIs with ease [https://github.com/rails/jbuilder]
|
|
gem 'jbuilder'
|
|
|
|
# Use Active Model has_secure_password
|
|
# [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
|
|
# gem "bcrypt", "~> 3.1.7"
|
|
|
|
# File handling
|
|
gem 'shrine', '~> 3.0'
|
|
|
|
# Use the database-backed adapters for Rails.cache, Active Job, and Action Cable
|
|
# gem 'solid_cable'
|
|
# gem 'solid_cache'
|
|
# gem 'solid_queue'
|
|
|
|
# To create variants (different sizes) of screenshot images
|
|
gem 'fastimage'
|
|
gem 'image_processing'
|
|
gem 'mini_magick'
|
|
|
|
# Reduces boot times through caching; required in config/boot.rb
|
|
gem 'bootsnap', require: false
|
|
|
|
|
|
|
|
# Deploy this application anywhere as a Docker container [https://kamal-deploy.org]
|
|
gem 'kamal', require: false
|
|
|
|
# Add HTTP asset caching/compression and X-Sendfile acceleration to Puma [https://github.com/basecamp/thruster/]
|
|
gem 'thruster', require: false
|
|
|
|
# Use Active Storage variants
|
|
# [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
|
|
# gem "image_processing", "~> 1.2"
|
|
|
|
group :development do
|
|
# Use console on exceptions pages [https://github.com/rails/web-console]
|
|
# Access an IRB console on exception pages or by using <%= console %> anywhere in the code.
|
|
gem 'listen', '~> 3.5'
|
|
gem 'web-console'
|
|
# Spring speeds up development by keeping your application running in the background.
|
|
# Read more: https://github.com/rails/spring
|
|
# gem 'better_errors'
|
|
# gem 'binding_of_caller'
|
|
# gem 'spring'
|
|
# gem 'spring-watcher-listen', '~> 2.0.0'
|
|
|
|
gem 'rails-erd'
|
|
|
|
gem 'ruby-lsp'
|
|
gem 'rufo'
|
|
end
|
|
|
|
# See https://github.com/sstephenson/execjs#readme for more supported runtimes
|
|
# gem 'therubyracer', platforms: :ruby
|
|
|
|
group :doc do
|
|
# bundle exec rake doc:rails generates the API under doc/api.
|
|
gem 'sdoc'
|
|
end
|
|
|
|
# PostgreSQL support
|
|
gem 'pg'
|
|
|
|
group :development, :test do
|
|
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
|
|
gem 'debug', platforms: %i[mri windows], require: 'debug/prelude'
|
|
|
|
# Static analysis for security vulnerabilities [https://brakemanscanner.org/]
|
|
gem 'brakeman', require: false
|
|
|
|
# Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/]
|
|
gem 'rubocop-rails-omakase', require: false # Helps run tests automatically after changes
|
|
|
|
# TODO: not sure all these packages are required (http://buildingrails.com/a/rails_automated_testing_setup_for_beginners)
|
|
gem 'guard-minitest'
|
|
gem 'guard-rails'
|
|
gem 'minitest-rails'
|
|
gem 'minitest-reporters'
|
|
|
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
|
gem 'byebug', platform: :mri
|
|
|
|
gem 'factory_bot_rails'
|
|
end
|
|
|
|
group :test do
|
|
# Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
|
|
gem 'capybara'
|
|
gem 'selenium-webdriver'
|
|
end
|
|
|
|
# TODO… https://github.com/galetahub/simple-captcha
|
|
# Captcha for anonymous reports
|
|
# gem "galetahub-simple_captcha", :require => "simple_captcha"
|
|
|
|
# Pagination
|
|
gem 'will_paginate'
|
|
|
|
# Style the paginator properly to use Zurb Foundation's style
|
|
gem 'will_paginate-foundation'
|
|
|
|
# Full-text search in PostgreSQL
|
|
gem 'pg_search'
|
|
|
|
# Nearest neighbor search for PostgreSQL using the pgvector extension
|
|
# https://github.com/ankane/neighbor
|
|
gem 'neighbor'
|
|
|
|
# Use SLIM as our templating language
|
|
gem 'slim-rails'
|
|
|
|
# Requires: apt-get install libbz2-dev
|
|
# gem 'bzip2-ruby', :git => 'https://github.com/chewi/bzip2-ruby.git'
|
|
# a decade old and does not support Ruby 3
|
|
|
|
# Authentication
|
|
gem 'devise'
|
|
|
|
# gem "recaptcha", require: "recaptcha/rails"
|
|
|
|
# gem "activemodel-serializers-xml"
|
|
|
|
# Authentication against Google, Facebook and others
|
|
gem 'omniauth'
|
|
# gem 'omniauth-amazon'
|
|
# gem 'omniauth-google-oauth2'
|
|
# gem 'omniauth-github'
|
|
# gem 'omniauth-openid'
|
|
|
|
# Single-sign-on with salsa.debian.net
|
|
gem 'omniauth_openid_connect'
|
|
# Mitigate CVE-2015-9284
|
|
# https://github.com/cookpad/omniauth-rails_csrf_protection
|
|
gem 'omniauth-rails_csrf_protection'
|
|
|
|
# Role-based access
|
|
gem 'cancancan'
|
|
|
|
# Gravatars
|
|
gem 'gravtastic'
|
|
|
|
gem 'bzip2-ffi'
|
|
|
|
# gem "dartsass-rails", "~> 0.5.1"
|
|
|
|
gem 'rails-healthcheck'
|
|
|
|
# .env files are used for credentials because the deployment system
|
|
# (Dokku) uses environment variables to specify the database connection string
|
|
# https://github.com/bkeepers/dotenv
|
|
gem 'dotenv'
|
|
|
|
gem 'cssbundling-rails', '~> 1.4'
|
|
|
|
gem 'importmap-rails', '~> 2.1'
|
|
|
|
gem 'rails_icons', '~> 1.3'
|