/yava

The website for my bachelor thesis.

Primary LanguageRubyGNU General Public License v3.0GPL-3.0

README

This README documents which steps are necessary to get this application called "YAVA: Yet Another Vegan App" up and running.

System dependencies

You only need a few packages, which should normally ship with your preferred distribution.

In this case, full support is only given for ArchLinux and we assume, that the operating system is already up and running.

Setup

This will explain the setup of the database, in this case PostgreSQL, the website, here Ruby on Rails and a mobile App, where we will use PhoneGap.

Please install these dependencies first:

  • Ruby >= 2.0.0
  • Node.js >= 0.10.17
  • PostgreSQL >= 9.2.4

Next, we will setup a new user, to secure the system a litte bit:

# useradd ror -d /path/to/yava
# passwd ror
# su ror

Then we will clone yava:

git clone git@github.com:tohn/yava.git

And add the following two lines to the ~/.bashrc:

export PATH="/path/to/yava/.gem/ruby/2.0.0/bin:$PATH"
export RAILS_ENV=production

and load them via:

source ~/.bashrc

Database

After installation of the package, you can create an user. First, become the postgres user:

sudo -i -u postgres

Create a new user, in this case ror:

createuser -s -U ror

Leave this user again with exit and create a new database with the normal ror-user:

createdb yava_prod

Website

Since you have (hopefully) already downloaded this project with git or something else, you can install all stuff necessary to run the website with just two commands:

gem install bundle
bundle install

Next we have to set some config variables:

echo "Yava::Application.config.secret_key_base = '" > config/initializers/secret_token.rb
rake secret >> config/initializers/secret_token.rb
echo "'" >> config/initializers/secret_token.rb

Afterwards, change the file config/local_env.yml. There you can set some settings like mail addresses and authentication for them and choose between Omniauth providers like Google (you have to create an app first) or Htaccess.

$EDITOR config/local_env.yml

In case of Omniauth, there are no further steps required (except for adding the key and secret for each provider in the above file).

In case of Htaccess, change USERNAME and PASSWORD in this file and uncomment this line in app/controllers/application_controller.rb:

before_filter :authenticate

This will use Htaccess and the default user (in db/seeds.rb).

For the database, you have to edit config/database.yml and change all occurences of username to your username, i.e. ror.

Next, open config/environments/production.rb and change the mail settings at the end of the file.

Then precompile the assets:

rails generate jquery:install
rake assets:precompile

Next, create the database, migrate the migrations in db/migrations and initialize the database with the data from db/seeds.rb:

rake db:create db:migrate db:seed

And finally, start the server:

rails s

I18n/L10n

If you want to use another language than the default one (german), you have to change the following files:

  • config/application.rb
  • app/views/yava_mailer/
  • app/views/home/

Also copy config/locales/de.yml and config/locales/simple_form.de.yml and adjust them.

Mail

To send mails, you have to change the settings in config/environments/production.rb. You can also choose a mail host without authentication, then uncomment the delivery_options lines in app/mailers/yava_mailer.rb and set at least YAVA_EMAIL and INQUIRY_EMAIL in config/local_env.yml.

Mailserver

If you have a mailserver installed and running, you can use it to receive mails and save them automatically in the database. This is useful for ingoing responses from the manufacturers.

You can pipe the mails like this:

cat testmail | /path/to/yava/bin/rails runner "YavaMailer.receive(STDIN.read)"

Cronjobs

To provide up to date veganities and a daily dump of your database, you can set up a cronjob.

As ror-User:

crontab -e

then insert:

# http://stackoverflow.com/questions/285717/a-cron-job-for-rails-best-practices
@hourly cd /path/to/yava && RAILS_ENV=production rake veganity:update --silent
@daily /path/to/yava/db/dump_postgresql_db.sh

Mobile application

The app can be found here.

You just have to change the URL to get it running with the newly created website described above, by changing rooturl in www/js/index.js.

Documentation

To generate the documentation for YAVA, run:

yardoc --no-private --protected app/**/*.rb - README.md

If you just want to create this file, run:

yardoc --no-private --protected - README.md

Then, open /path/to/yava/doc/index.html in your browser.