fixin.me/README.md

136 lines
3.0 KiB
Markdown

README
======
Quantified self
Software requirements
---------------------
* Server side:
* Ruby version: developed on Ruby 3.x
* database with:
* recursive Common Table Expressions (CTE) support, e.g.
MySQL >= 8.0, MariaDB >= 10.2.2
* decimal type with precision of at least 30 (not sure if SQLite3
supports this)
* for testing: browser as specified in _Client side_ requirements
* Client side:
* browser supporting below requirements (e.g. Firefox >= 121):
* [`import maps`](https://caniuse.com/import-maps)
(required by `importmap-rails` gem >= 2.0)
* CSS [`:has()` pseudo-class](https://caniuse.com/css-has)
Installation
------------
git clone https://gitea.michalczyk.pro/fixin.me/fixin.me.git
bundle config set --local path '.gem'
bundle install
Configuration
-------------
cp -a config/application.rb.dist config/application.rb
Modify configuration settings below `SETUP` comment appropriately.
Database
--------
Grant database user and privileges:
> mysql -p
mysql> create user fixinme@localhost identified by '<some password>';
mysql> grant all privileges on fixinme.* to fixinme@localhost;
mysql> flush privileges;
Copy config template and update database configuration:
cp -a config/database.yml.dist config/database.yml
Run database creation and migration tasks:
RAILS_ENV="production" bundle exec rake db:create db:migrate db:seed
Running
-------
### Standalone Rails server + Apache proxy
Copy Puma config template:
cp -a config/puma.rb.dist config/puma.rb
and specify server IP/port, either with `port` or `bind`, e.g.:
bind 'tcp://0.0.0.0:3000'
Run server
bundle exec rails s -e production
### Apache mod_passenger
TODO: add sample configuration
Contributing
------------
### Database
Grant database user privileges for development and test environments,
possibly with different Ruby versions:
> mysql -p
mysql> create user `fixinme-dev`@localhost identified by '<some password>';
mysql> grant all privileges on `fixinme-%`.* to `fixinme-dev`@localhost;
mysql> flush privileges;
### Development environment
Starting application server in development environment:
bundle exec rails s -e development
For running rake tasks, prepend command with environment:
RAILS_ENV="development" bundle exec rake ...
### Running tests
Tests need to be run from within toplevel application directory:
* all system tests:
bundle exec rails test:system
* system test(s) with seed/test name specified:
bundle exec rails test:system --seed 64690 --name test_add_unit
* all tests from one file, with optional seed:
bundle exec rails test test/system/users_test.rb --seed 1234
### Icons
Pictogrammers Material Design Icons: https://pictogrammers.com/library/mdi/
### Rake tasks
Exporting default settings defined in application to seed file (e.g. to send as
PR or share between installations):
bundle exec rails db:seed:export