-
Notifications
You must be signed in to change notification settings - Fork 0
License
mastermarv/ses
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Beschreibung =================== Infopark SES ist ein Ruby-Gem, das zum Zweck der Indizierung von Infopark CMS Fiona-Inhalten vom CM Nachrichten über geänderte CMS-Objekte entgegen nimmt, Indizierungs- oder Deindizierungs-Anfragen erzeugt und diese an Solr sendet. Das Infopark SES Ruby-Gem ergänzt eine bestehende Rails-App, typischerweise die Website-App eines konkreten Projekts. Die Rails-App muss bereits den Infopark Rails Connector einsetzen. Infopark SES setzt eine Rails Connector-Anbindung zur CMS-Datenbank voraus. Infopark SES besteht aus dem SES Indexer-Resque-Worker, einem Installer für Apache Solr und der Logik zum Verdrahten dieser Software-Komponenten. Der eigentliche Kern des Infopark SES ist der Indexer. Er fragt unter Benutzung des Rails Connectors Objekt-Felder ab, und schickt diese aufbereitet an Apache Solr. Der Installer für Redis (ist Voraussetzung für Resque) ist nicht enthalten. Die Installation ist auf http://redis.io/download beschrieben. Empfehlung: von einem Sysadmin mit einem Paketmanager installieren lassen (z.B. emerge), Eintragen in den Default-Runlevel (z.B. rc-update add redis default) und starten mit /etc/init.d/redis start. Lizenz ======== Das Gem steht unter LGPL v3. Details siehe LICENSE.md. Gem testen ============== Es wird eine Fiona-6.7-Entwicklungsumgebung per Vagrant in ~/nps vorausgesetzt, die auch bereits gebaut sein muss: git clone -b 6.8-maint [email protected]:infopark/fiona.git cd fiona git submodule update --init --recursive vagrant ssh cd nps ln -s ~/licenses/infopark-internal-restricted-license.xml config/license.xml rake build Die Tests des Infopark SES Gems werden mit vagrant ssh cd ~/ses mysqladmin -uroot create test_ses_lucene bundle bundle exec rake test ausgeführt. Die Tests sind vollständige Integrationstests. Sie liegen in test_app. Die von der test_app verwendeten Gems liegen in vendor/cache. Verwendet wird Ruby 1.9. Gem bauen ============== rake build Installation ============== Einbindung des Infopark SES Gem in die Rails-App ------------------------------------------------ Gemfile: gem "infopark_ses" Infopark SES neben den Infopark Rails Connector und die anderen Gems in vendor/cache ablegen: cp infopark_ses-x.y.z.gem vendor/cache/ Gems installieren: bundle Bundler lädt notwendige Gems bei Bedarf von rubygems.org herunter. Alle Gem-Dateien werden, bevor sie installiert werden, automatisch in vendor/cache abgelegt, wenn mindestens ein Gem dort liegt. Bundler hält diesen Cache selbständig up-to-date. Alle Gems in vendor/cache können eingecheckt werden. Das wird sogar empfohlen, weil so das Deployment (mit Capistrano und Bundler) auch ohne Internet-Verbindung ausgeführt werden kann. Infopark SES bringt beispielhaft Konfigurationsdateien mit, die in der Projekt-Rails-App benötigt werden: rails g ses:install Ein paar dieser generierten Dateien werden im Folgende beschrieben: In config/initializers/indexer.rb wird festgelegt, welche Attribute eines Obj unter welchem Key im Solr-Index gespeichert werden sollen. Infopark::SES::Indexer.index_fields liefert für ein Obj einen Hash mit der Abbildung von Index-Keys auf Obj-Attribut-Werte. Liefert die Konfiguration nil, wird die Datei nicht indiziert bzw. deindiziert. Infopark::SES::Indexer.index_fields soll projektspezifisch konfiguriert werden. config/initializers/filter.rb enthält Konfigurationseinstellungen, um den Fiona-IF-Filter (.doc -> .html usw.) einzubinden. Die Änderungen am Projekt können jetzt eingecheckt werden. Deployment in die Preview-Umgebung konfigurieren -------------------------------------------------- Die Capistrano-Konfiguration für das Deployment mit Bundler kann folgendermaßen ergänzt werden. Am Anfang der Datei config/deploy.rb einfügen: set :bundle_flags, "--deployment --quiet --local" require 'bundler/capistrano' In den Namespace :deploy zusätzlich den Task :restart_ses_indexer einfügen: task :restart_ses_indexer, :roles => :app do if stage == 'cms_preview' run "cd #{current_path} && bundle exec rake index:worker:restart" end end Und weiter unten: after "deploy:restart", "deploy:restart_ses_indexer" Beim Deployment installiert Bundler mit der o.g. Option --deployment die Gems automatisch ins Capistrano-Projekt-Verzeichnis shared/bundle, also direkt neben releases, current usw. Damit werden Gems im User-Space projektbezogen verwaltet. Deploy ins Preview-Environment: cap deploy Anbindung von Resque auf dem CMS-Server ------------------------------------------------------------------------ Bei Änderungen an Objekten werden vom CM entsprechende Indizierungs-Jobs in die Job-Queue von Resque gestellt werden. In Fiona existiert bereits die Schnittstelle, um die Tcl-Prozedur objectChangedCallback aufzurufen. Diese Prozedur muss nur noch im CM implementiert werden. Die Beispiel-Implementierung wird folgermaßen ins CM-Script-Verzeichnis kopiert und anschließend konfiguriert: cp $(bundle show infopark_ses)/cms-callback/* ~/CMS-Fiona/instance/default/script/cm/serverCmds/ gem install resque --no-ri --no-rdoc --no-user-install --install-dir ~/CMS-Fiona/instance/default/script/gems gem install json --no-ri --no-rdoc --no-user-install --install-dir ~/CMS-Fiona/instance/default/script/gems Schließlich muss noch der CM neu gestartet werden, damit er den neuen Callback nutzt: ~/CMS-Fiona/instance/default/bin/rc.npsd restart CM Installation von Solr ------------------------------------ (Homepage: <http://lucene.apache.org/solr/>) Der Java-Server Apache Solr wird ebenfalls mit curl heruntergeladen und in $HOME installiert. Per Konvention zeigt ein Symlink namens apache-solr auf das ausgepackte Verzeichnis, damit es einfach über ~/apache-solr referenziert werden kann. Anschließend wird die neue Installation so konfiguriert, dass sie für den Einsatz mit Fiona geeignet ist: ssh cms-host cd $project/preview/current bundle exec ses-apache-solr install Starten: bundle exec ses-apache-solr start Stoppen: bundle exec ses-apache-solr stop Status: bundle exec ses-apache-solr status Zur Problemanalyse ist der Apache Solr erreichbar unter: http://localhost:8983/solr/admin bzw. http://localhost:8983/solr/de/admin bei Verwendung von mehreren Cores (aka. Collections). Im letzteren Fall ist der URL-Bestandteil "de" der Name des Cores. Komplette Indizierung --------------------------- ssh cms-host cd $project/preview/current RAILS_ENV=production bundle exec rake index:worker:start RAILS_ENV=production bundle exec rake index:all Integration der Suche in Rails -------------------------------- Die Rails-Connector-Add-Ons ab Version 6.7.3 unterstützen den Lucene-basierten SES. Zur Aktivierung muss der SearchRequest umdefiniert werden (lib/search_request.rb): class SearchRequest < RailsConnector::LuceneSearchRequest end Das Interface bleibt gleich, bis auf folgende Ausnahmen: Querys werden in Solr Query Language anstatt VQL geschrieben. Die möglichen Optionen sind im LuceneSearchRequest dokumentiert.
About
No description, website, or topics provided.
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published