Automatische Tests
Zur Zeit sind keine Tests vorhanden.
[https://stackoverflow.com/questions/111389/best-way-to-add-tests-to-an-existing-rails-project]
• keine Specs fuer vorhandenen Code schreiben
• bei Aenderungen Specs schreiben
• bei neuen Features Specs vorher schreiben
Dies setzt eine bestehende Integration voraus. Die Anwendung muss also
mindestens auf Specs vorbereitet werden. RCov ist auch hilfreich.
Das Buch [Working Effectively with Legacy Code]. (Gekauft, auf Kindle)
Warum? Regression vermeiden, Umstellung auf Rails 4 (aber dann
braeuchte man bessere Coverage).
[Working Effectively with Legacy Code]
http://www.amazon.com/dp/0131177052/
Uebersetzungsdateien vereinheitlichen, Texte aus Views ziehen
Ein Tool wird benoetigt. Eventuell [Translation Center].
[Translation Center] https://github.com/BadrIT/translation_center
Darstellung vereinheitlichen
CSS Framework
Bootstrap mit einer Semantik-Schicht darueber, SASS
Modularisierung, der Interface-Komponenten
Kontext-Problematik
Das muss neu aufgebaut werden, der aktuelle Ansatz ist zu
inkonsistent.
Deploy/Produktivbetrieb Dokumentieren/vereinheitlichen
Zur Zeit wird die Web-App ueber Capistrano deployed. Alles andere
passiert per Hand und ist teilweise in Confluence dokumentiert.
Alles ueber SaltStack, dadurch wird alles automatisiert und
gleichzeitig dokumentiert.
Datenbank von MySQL auf Postrgres
Nicht unbedingt noetig, aber schoener.
Rails Version auf 4.0
Unbedingt noetig (Sicherheitsrelevant) und der schwierigste Teil.
• Docker Image mit Ruby 2.1: docker pull octohost/ruby-2.1
• Dieses Image und bestehenden MySQL Container gestartet
• bundle install (klappt nicht -> apt-get update && apt-get install
libgmp-dev)
• Rails Version in Gemfile auf 4.0.3 geaendert
• bundle update
• bundle exec rails new_rails
• cd new_rails
• therubyracer gem in Gemfile einkommentiert
• sqlite nach mysql in Gemfile geaendert
• Routes updaten (siehe [diesen Artikel.]), das rails-upgrade Gem
hilft leider nicht (produziert nur ganz wenige Routen)
• Routes werden erstmal ganz neu aufgebaut
• Problem mit ACL, acl9 gem hinzugefuegt
• application controller mergen
• benutze surveyor gem von [diesem Fork] wegen Rails 4 kompatibilitaet
(sollte aber bald gemerged werden)
• named_scope -> scope (noch nicht vollstaendig gleich, muss noch
getestet werden)
• [liquid] wird zur Generierung von einigen Templates benutzt
Die neue App hat den Namespace NewRails (siehe z.B. routes.rb). Das
sollte noch geaendert werden.
Die Aenderungen sind sehr tiefgreifend. Vermutlich ist das beste
Vorgehen, eine neue Rails 4 Anwendung zu erstellen und den Source nach
und nach von der alten Anwendung rueberzukopieren. Dies passiert in
Branch rails.
Es fehlen noch die statischen Resourcen, d.h. Bilder, CSS, JS
Bluecloth ist veraltet und wird durch Redcarpet ersetzt.
[diesen Artikel.]
http://www.engineyard.com/blog/2010/the-lowdown-on-routes-in-rails-3/
[diesem Fork]
https://github.com/ferrisoxide/surveyor/tree/feature/rails_4
[liquid] http://liquidmarkup.org
Routes neu erstellen (RESTful, konsistent)
Die Routes sind organisch gewachsen und schrecklich inkonsistent und
unuebersichtlich.
Es muessen alle Routes neu geschrieben und evtl. auch die URL-Helper
neu angepasst werden, da diese auch verschiedene Konventionen
verwenden.
Circular Dependency
Server neu starten hat bisher immer geholfen.
Season Definition Builders
Das sollten Generators sein, siehe [diese Guide].
[diese Guide] http://guides.rubyonrails.org/generators.html
Namespaces
Admin und User mit Namespacing trennen.
Dokumentation
TomDoc