debshots/README.Developer

85 lines
2.2 KiB
Text

# Full text search
The pg_search Ruby gem is used for full-text searched in Rails.
See: https://github.com/Casecommons/pg_search
Reformatted SQL query for fulltext search:
SELECT COUNT(*) FROM "packages" WHERE (
(
(
to_tsvector('simple', coalesce("packages"."name"::text, ''))
||
to_tsvector('simple', coalesce("packages"."description"::text, ''))
||
to_tsvector('simple', coalesce("packages"."long_description"::text, ''))
)
@@
(
to_tsquery('simple', '''' || 'browser' || ' ''')
)
)
)
# Index:
CREATE INDEX packages_gin ON packages USING GIN( (to_tsvector('simple',
coalesce("packages"."name"::text, '')) || to_tsvector('simple',
coalesce("packages"."description"::text, '')) || to_tsvector('simple',
coalesce("packages"."long_description"::text, ''))) );
---------
Used: https://github.com/semaperepelitsa/jquery.fileupload-rails
Which is a gem for: https://github.com/blueimp/jQuery-File-Upload
Paperclip for attachment/screenshot file handlind within ActiveRecord
https://github.com/thoughtbot/paperclip
--
Components:
- Rails 5 (widespread, up-to-date, solves many common problems)
- PostgreSQL (fast, easy, I don't like MySQL, good fulltext search)
- Git (most people nowadays use Git)
- jQuery (well known and easy to use)
- Zurb Foundation (integrates nicer than Twitter Bootstrap)
- Guard for automated testing (http://www.rubydoc.info/gems/guard-rails)
--
Importer
How Debian repositories are organized: https://wiki.debian.org/RepositoryFormat
--
Logging from within the application into the database's "log" table:
Log.log "foo"
or with section (default='frontend'):
Log.log "foo", "importer"
--
Future stuff
------------
A possible migration adding a unique constraint to avoid duplicate images
class AddScreenshotUniqueConstraintImageFingerprint < ActiveRecord::Migration
def change
add_index :screenshots, [:package_id, :image_fingerprint], :unique => true
end
end
A separate validation in the Screenshots model has been implemented already.
This unique constraint would raise an error and not trigger a validation error
properly unless the separate model validation is in place.
--
Deployment
----------
sudo apt-get install libyaml-dev libbz2-dev