2017-05-04 23:09:21 +02:00
|
|
|
|
= Agenda du libre
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-03 23:54:44 +01:00
|
|
|
|
Ceci est une application permettant de lister des évènements sur un calendier,
|
|
|
|
|
évènements proposés par tout un chacun mais nécessitant une modération avant
|
|
|
|
|
d'être affichés.
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-03 23:54:44 +01:00
|
|
|
|
Cette application est disponible sous la license AGPL version 3 ou supérieure.
|
2015-10-31 23:22:13 +01:00
|
|
|
|
|
2015-10-03 13:57:10 +02:00
|
|
|
|
Elle est hébergée ici: https://git.framasoft.org/agenda-libre/agenda-libre-ruby
|
|
|
|
|
et visible ici: http://agendadulibre.org
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-03 23:54:44 +01:00
|
|
|
|
La technologie repose sur "Ruby on Rails", version 4 ou supérieure.
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-06 14:44:01 +01:00
|
|
|
|
Il existe aussi des projets équivalents
|
2015-10-03 13:57:10 +02:00
|
|
|
|
https://git.framasoft.org/agenda-libre/agenda-libre-php
|
2014-03-06 14:44:01 +01:00
|
|
|
|
https://bitbucket.org/mlhamel/agendadulibre
|
|
|
|
|
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Prérequis
|
2015-10-31 18:38:42 +01:00
|
|
|
|
|
2015-10-31 23:22:13 +01:00
|
|
|
|
Exemple d'installation pour Debian:
|
2014-12-14 22:52:14 +01:00
|
|
|
|
{{{
|
|
|
|
|
~ $ apt-get install sqlite3 libsqlite3-dev build-essential git
|
2014-12-15 16:19:53 +01:00
|
|
|
|
~ $ apt-get install ruby ruby-dev bundler
|
2014-12-14 22:52:14 +01:00
|
|
|
|
}}}
|
|
|
|
|
|
2017-03-28 10:23:31 +02:00
|
|
|
|
Dans le cas d'une installation en mode production, dans un environnement comme
|
|
|
|
|
Debian stable Jessie, il faut ajouter les dépôt {{{jessie-updates}}} et
|
|
|
|
|
{{{jessie-backports}}} pour obtenir une version récente de {{{bundler}}}.
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
2017-03-28 10:24:23 +02:00
|
|
|
|
Il faut de plus installer les paquets {{{zlib1g-dev}}} et {{{libsqlite3-dev}}}
|
2017-03-28 10:23:31 +02:00
|
|
|
|
ou {{{libmysqlclient-dev}}}.
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Code source
|
2015-10-31 18:38:42 +01:00
|
|
|
|
|
2014-12-16 11:12:28 +01:00
|
|
|
|
Pour installer l'Agenda du libre, vous devrez récupérer le code source à l'aide
|
|
|
|
|
de "git", puis installer les dépendances avec "bundler" (bundler est packagé
|
2017-03-28 10:23:31 +02:00
|
|
|
|
dans Debian, mais peut aussi s'installer depuis http://bundler.io, une version
|
2014-12-16 11:12:28 +01:00
|
|
|
|
récente de préférence).
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-06 18:10:47 +01:00
|
|
|
|
Par exemple:
|
|
|
|
|
{{{
|
2015-10-03 13:57:10 +02:00
|
|
|
|
~ $ git clone git@git.framasoft.org:agenda-libre/agenda-libre-ruby.git
|
2014-03-06 18:10:47 +01:00
|
|
|
|
~ $ cd agenda-du-libre
|
2014-09-25 00:21:05 +02:00
|
|
|
|
~ $ bundle install --path vendor/bundle --without production
|
2014-03-06 18:10:47 +01:00
|
|
|
|
}}}
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2017-03-28 10:23:31 +02:00
|
|
|
|
Dans le cas d'une installation en mode production, on utilisera plutôt
|
2017-04-02 12:24:58 +02:00
|
|
|
|
`--without test developement`.
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Base de données
|
2015-10-31 18:38:42 +01:00
|
|
|
|
|
2017-04-02 12:24:58 +02:00
|
|
|
|
La base de données peut être "sqlite3", "postgresql" ou "mysql2". Par défaut
|
2014-07-18 23:20:30 +02:00
|
|
|
|
sqlite3 est configurée, mais vous pouvez la modifier dans le fichier
|
|
|
|
|
`config/database.yml`.
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2017-04-02 12:24:58 +02:00
|
|
|
|
/!\ En pratique, en 2017-03, PostgreSQL server ne parvenait pas à interprêter
|
|
|
|
|
le fichier schema.rb généré automatiquement depuis une base fonctionnelle.
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
=== Dans le cas d'une installation MySQL
|
2017-04-02 12:24:58 +02:00
|
|
|
|
|
|
|
|
|
Il convient d'installer d'abord MySQL server sur sa machine :
|
|
|
|
|
{{{
|
|
|
|
|
~ # apt install mysql-server
|
|
|
|
|
}}}
|
|
|
|
|
|
|
|
|
|
Il faut alors choisir un mot de passe pour l'utilisateur root, avec lequel on
|
|
|
|
|
créera une nouvelle base pour le projet, ainsi qu'un utilisateur ayant les
|
|
|
|
|
droits sur cette base :
|
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
~ # mysql -u root -p
|
|
|
|
|
mysql> CREATE DATABASE '<nouvelle_instance>';
|
|
|
|
|
mysql> CREATE USER '<nouveau_user>' IDENTIFIED BY '<mot-de-passe>';
|
|
|
|
|
mysql> GRANT ALL ON <nouvelle_instance>.* TO '<nouveau_user>'@'localhost';
|
2017-04-02 12:35:35 +02:00
|
|
|
|
}}}
|
2017-04-02 12:24:58 +02:00
|
|
|
|
|
2017-04-02 12:37:48 +02:00
|
|
|
|
---
|
2017-04-02 12:24:58 +02:00
|
|
|
|
|
2014-07-18 23:20:30 +02:00
|
|
|
|
Mettez en place le schéma comme ceci:
|
2014-03-06 18:10:47 +01:00
|
|
|
|
{{{
|
2017-04-02 12:24:58 +02:00
|
|
|
|
~ $ bundle exec rake db:setup [RAILS_ENV="production"]
|
2014-03-06 18:10:47 +01:00
|
|
|
|
}}}
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Lancement
|
|
|
|
|
|
|
|
|
|
=== En développement
|
2015-10-31 18:38:42 +01:00
|
|
|
|
|
2017-02-11 14:34:09 +01:00
|
|
|
|
Puis lancez rails (avec tests et vérifications de sécurité):
|
2014-03-06 18:10:47 +01:00
|
|
|
|
{{{
|
2017-02-11 14:34:09 +01:00
|
|
|
|
~ $ bundle exec guard
|
2014-03-06 18:10:47 +01:00
|
|
|
|
}}}
|
2013-11-13 23:09:38 +01:00
|
|
|
|
|
2014-03-03 23:54:44 +01:00
|
|
|
|
Vous pouvez finalement accéder à l'agenda dans un navigateur à l'URL suivante:
|
|
|
|
|
http://localhost:3000
|
2014-03-06 18:10:47 +01:00
|
|
|
|
|
2016-10-03 10:12:03 +02:00
|
|
|
|
Votre premier modérateur admin est identifié par "admin@example.com", son mot de
|
2014-12-16 11:12:28 +01:00
|
|
|
|
passe étant "password".
|
2014-07-18 23:31:11 +02:00
|
|
|
|
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
=== En production
|
2017-03-28 10:19:26 +02:00
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
~ # apt install libapache2-mod-passenger
|
2017-04-02 12:24:58 +02:00
|
|
|
|
~ # vi /etc/apache2/sites-available/nouvelle_instance.conf
|
|
|
|
|
<VirtualHost *:80>
|
|
|
|
|
ServerName DOMAINE.NAME
|
|
|
|
|
DocumentRoot /srv/<nouvelle_instance>/public
|
|
|
|
|
SetEnv DATABASE_URL mysql2://<nouveau_user>@localhost/<nouvelle_instance>
|
|
|
|
|
SetEnv SECRET_KEY_BASE <SECRET>
|
|
|
|
|
SetEnv RAILS_ENV production
|
|
|
|
|
RailsEnv production
|
|
|
|
|
<Directory /srv/<nouvelle_instance>/public>
|
|
|
|
|
Require all granted
|
|
|
|
|
</Directory>
|
|
|
|
|
</VirtualHost>
|
|
|
|
|
~ # a2ensite /etc/apache2/sites-available/nouvelle_instance.conf
|
|
|
|
|
~ # /etc/init.d/apache2 reload
|
2017-03-28 10:19:26 +02:00
|
|
|
|
}}}
|
|
|
|
|
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Aide mémoire
|
2015-10-31 23:22:13 +01:00
|
|
|
|
|
|
|
|
|
Commande à utiliser en console rails pour créer plusieurs événements:
|
|
|
|
|
{{{
|
|
|
|
|
w = 0
|
|
|
|
|
Event.create(elt.attributes.merge( { start_time: elt.start_time+w.week, end_time: elt.end_time+w.week } )).start_time; w = 1
|
|
|
|
|
}}}
|
2015-10-18 13:14:38 +02:00
|
|
|
|
|
2016-06-25 17:20:45 +02:00
|
|
|
|
Commande à utiliser pour précompiler les assets avant leur déploiement dans un environnement de production
|
|
|
|
|
{{{
|
|
|
|
|
bundle exec rake assets:precompile RAILS_ENV=assets
|
|
|
|
|
}}}
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Mise à jour
|
2016-11-19 21:41:23 +01:00
|
|
|
|
|
2017-03-18 16:14:55 +01:00
|
|
|
|
Pour mettre à jour l'agenda du libre, il faut d'abord aller chercher la version de master la plus récente sur le git
|
|
|
|
|
upstream (https://git.framasoft.org/agenda-libre/agenda-libre-ruby). Une fois cela fait, il faut y ré-appliquer les
|
|
|
|
|
changements qui auraient été effectués pour l'environnement donné et quelques conflits sont à prévoir. Le plus courant:
|
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
db/schema.rb: Ignorer les conflits. Prendre la version courante. Ce fichier est mis à jour à chaque migration et représente
|
|
|
|
|
l'état actuel de la base de données sur le serveur courant. Il est recommandé de versioner de fichier, mais à moins d'avoir
|
|
|
|
|
exactement le même type de base de données que les développeurs upstream, il va créer des conflits. Seule la dernière version
|
|
|
|
|
du fichier peut être conservée sur la branche de travail.
|
|
|
|
|
}}}
|
|
|
|
|
|
2016-11-19 21:41:23 +01:00
|
|
|
|
Lors des mises à jour de l'agenda du libre à une version plus récente, les commandes suivantes sont nécessaires:
|
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
~ $ bundle install --path vendor/bundle --without production
|
|
|
|
|
~ $ bundle exec rake db:migrate
|
|
|
|
|
}}}
|
|
|
|
|
|
|
|
|
|
Puis redémarrer avec:
|
|
|
|
|
|
|
|
|
|
{{{
|
|
|
|
|
~ $ bundle exec rails s
|
|
|
|
|
}}}
|
|
|
|
|
|
2017-05-04 23:09:21 +02:00
|
|
|
|
== Discussions
|
2015-10-31 18:38:42 +01:00
|
|
|
|
|
|
|
|
|
https://kiwiirc.com/client/irc.freenode.net/agendadulibre
|
|
|
|
|
|
2014-03-06 18:10:47 +01:00
|
|
|
|
{{{
|
|
|
|
|
° ° °
|
|
|
|
|
\ | / \ | / \ | /
|
|
|
|
|
| | |
|
|
|
|
|
___ ___ ___
|
|
|
|
|
\ / \ / \ /
|
|
|
|
|
. \_|_/ .
|
|
|
|
|
\ | /
|
2016-06-25 17:20:45 +02:00
|
|
|
|
}}}
|