debshots/Gemfile
Christoph Haas 4948fe50e3 Add semantic package search via pgvector embeddings
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.
2026-08-22 22:07:56 +02:00

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'