Häufige Grails-Fehler

Fehler:
Error processing GroovyPageView: Cannot create a session after the response has been committed

Fehlerhafter Code:

<g:if test="${session.user != null}">
  <li><g:link class="home" controller="user" action="logout">Logout</g:link></li>
</g:if>
<g:else>
  <li><g:link class="home" controller="user" action="login">Login</g:link></li>
</g:else>

Fehlerfreier Code:

<g:if test="${request.getSession(false) && session.user != null}">
  <li><g:link class="home" controller="user" action="logout">Logout</g:link></li>
</g:if>
<g:else>
  <li><g:link class="home" controller="user" action="login">Login</g:link></li>
</g:else>

Heroku App mit Grails unter Windows erstellen

Anleitung:

  1. Heroku Toolbelt for Windows installieren
  2. Sicherstellen, dass der „bin“-Ordner der Git-Installation in der Windows Systemvariablen „Path“ steht (wird benötigt für die Ausführung von ssh-keygen)
  3. In der Eingabeaufforderung (cmd) ins Git-Repository des Grails-Projektes wechseln
  4. heroku login in der Eingabeaufforderung ausführen
  5. SSH Key generieren lassen (wird in „C:\Users\Benny\.ssh“ gespeichert) und automatisch zu Heroku hochladen
  6. heroku create eingeben (daraufhin wird eine Heroku App angelegt, sichtbar im Heroku Dashboard)
  7. git push heroku master ausführen
  8. Abwarten bis die Anwendung vollständig bereitgestellt ist…
  9. heroku open ausführen, um einen Browser mit der Webseite der eigenen Heroku-App zu öffnen

Getestet mit:
Grails 2.3.1

Weitere Informationen:
Getting Started with Grails on Heroku

Emails mit Django über Google Mail verschicken

Das Verschicken von Emails mit dem Web-Framework Django ist kinderleicht. Man muss dazu nur die Einstellungen der eigenen Google Mail-Adresse in die Datei settings.py aufnehmen:

1
2
3
4
5
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'yourname@gmail.com'
EMAIL_HOST_PASSWORD = 'your-secret-password'
EMAIL_PORT = 587
EMAIL_USE_TLS = True

Danach kann man eine Test-Email aus der Konsole heraus (python manage.py shell) mit den folgenden Befehlen verschicken:

1
2
3
from django.core.mail import EmailMessage
email = EmailMessage('The Email subject', 'Your Text.', to=['your-friend@gmail.com'])
email.send()