wort-schule / wort.schule

Inklusive OER-Webanwendung zur Unterstützung des (Schrift-)Spracherwerbs im Deutschen
https://wort.schule
MIT License
8 stars 3 forks source link

wort.schule

Development Setup

wort.schule uses Ruby on Rails as a framework and PostgreSQL as the default database.

  1. Clone the repository: git clone https://github.com/wintermeyer/wort.schule
  2. cd wort.schule
  3. Install Ruby version defined in .ruby-version (e.g. use asdf)])
  4. Install vips (e.g. brew install vips on macOS with Homebrew)
  5. Run bin/setup (der entsprechende User benötigt Superuser Rechte für diesen Schritt)
  6. Run bin/rails db:create db:migrate (do a bin/rails db:drop first if you want to delete an already existing database)
  7. Run bin/rails 'word_images:import[db/seeds/word_images]' to import images associated to words
  8. Run bin/dev
  9. Open the browser and navigate to http://localhost:3000/

The initial data is loaded by a migration, so that the database schema can be adapted without adapting the schema of the initial data.

Misc

Tests

bin/rails spec

Production Setup

Application Management

Show/hide blank word attributes

Configure in config/application.rb whether blank attributes of words should be shown or not:

config.hide_blank_items = true

Restart the Rails server when changing the configuration.

Create an Administrator

The first administrator needs to be created manually in the Rails console (bin/rails c):

password = SecureRandom.hex
# Take note of the password

Admin.create(email: 'muster@example.com', password:, password_confirmation: password)

Docker Setup

There is a Dockerfile and an example docker-compose.yml.example for a production setup of the application within Docker. Note that you should customize the docker-compose.yml before running it in production.

After installing Docker and docker-compose, run docker-compose up in this directory to start the application.

To quickly test the application locally without customizing the docker-compose.yml, you may run docker-compose -f docker-compose.yml.example up in this directory.

Text to speech

Requirements

Processing

To process all words, do: Word.where(with_tts: true).each { |w| TtsJob.perform_later(w) } (or perform_now when there is no job runner).