software1987 Tech-Blog

10Okt/120

Probleme mit Faraday und Omniauth

Für meinen englischsprachigen, in Ruby on Rails geschriebenen Blog geekmonkey.org nutze ich das Gem Omniauth. Nach einer Neuinstallation auf einem neuen Server bekam ich beim OAuth-Login via Github plötzlich folgenden Fehler:


Faraday::Error::ConnectionFailed
SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed

Da ich RVM zum verwalten unterschiedlicher Ruby-Versionen nutze, lag es nah, dass bei der Installation von Ruby 1.9.3 irgendwas schief gelaufen war. Eine kurze Google-Suche ergab, dass dies ein Problem mit der auf meinem System installierten Version der openssl Bibliothek ist. Um das Problem zu lösen, kann man mit rvm eine passende Version der openssl Bibliothek nachinstallieren. Bei der Gelegenheit lässt sich auch gerade eine angepasste Version von libreadline installieren:


sudo apt-get install libreadline-dev
rvm pkg install readline
rvm pkg install openssl
rvm reinstall all --force --with-openssl-dir=$rvm_path/usr

Dies lädt und kompiliert die beiden Bibliotheken readline und openssl für alle rvm rubies und kompiliert danach alle (!) installierten Ruby-Versionen neu. Angelegte Gemsets werden dabei nicht gelöscht und können daher nach Fertigstellung der Installation direkt weiter verwendet werden.

28Jan/110

Netbeans 7 und die krux mit Oracle

Da habe ich mich die Tage noch gefreut, dass Netbeans 7.0 bald vor der Tür steht und nun erreicht mich die folgende Nachricht über Heise: http://www.heise.de/newsticker/meldung/NetBeans-7-Rails-Unterstuetzung-faellt-raus-1179098.html

Oracle hat beschlossen im Zuge der Veröffentlichung von Java 7 und dem damit verbundenen JDK7 alle verfügbaren Ressourcen primär in die Erweiterung von von Netbeans für Java 7 zu stecken. Damit geht Netbeans wieder ein Teil der Entwicklergemeinde verloren. Ich zumindest habe es immer genossen mit Netbeans meine Rails-Applications zu entwickeln, doch das wird nun leider bald ein Ende haben müssen. Die Hoffnung bleibt aber, dass das Rails-Plugin von der Community weitergetragen wird und Rails 3.0 irgendwann komplett unterstützt wird (aktuell Rails 3.0 Beta).

Ich werde mich nun wohl nach einer neuen IDE umschauen müssen. Textmate fällt bei mir raus da ich primär auf Linux/Windows arbeite und auch möglichst eine IDE haben möchte die auf beidem funktioniert. Aptana Radrails 2 scheint bisher eine brauchbare Alternative zu sein, auch wenn diese IDE auf Eclipse aufbaut.

Danke Oracle für das zerstören gut geleiteter Open Source Projekte. Auf Wiedersehen Open Solaris, OpenOffice, Hudson, MySQL und Willkommen LibreOffice, Jenkins und MariaDB!

veröffentlicht unter: Ruby, Webentwicklung keine Kommentare
3Sep/100

MongoSession – Ein PHP Session-Handler mit MongoDB

MongoSession

MongoSession ist eine Implementierung eines MongoDB Session-Handlers für PHP. Diese Klasse wurde als drop-in Lösung entwickelt um von normalem Session-Handling einfach umstellen zu können. Die Klasse wurde ursprünglich von Corey Ballou entwickelt und im Blog vorgestellt. Als ich das Projek auf Github geforkt hatte stellte ich schnell fest, dass der Code ungetestet und nicht funktional war. Nach einigen Testläufen ist MongoSession nun aber einsatzbereit.

Benutzung

Die einfachste Möglichkeit MongoSession zu verwenden, ist der folgende Code:

<?php
require_once('MongoSession.php');
$session = new MongoSession();
?>

Der Konstruktor von MongoSession setzt einen neuen Session-Handler, startet die Session (session_start()) und stellt eine Verbindung zum MongoDB-Server auf localhost her.

require_once('MongoSession.php');

// Array zur Konfiguration von MongoSession
$config = array(
	// Gültigkeitsbereich des Cookies
        'cookie_path' => '/',
        'cookie_domain' => '.mydomain.com', // .mydomain.com

        // Session
        'lifetime' => 3600, // session lifetime in Sekunden
        'database' => 'session', // Name der MongoDB database
        'collection' => 'session', // Name der MongoDB collection
        'persistent' => false, // Persistente Verbindung?
        'persistent_name' => 'MongoSession, // Name der Verbindung

	// Array von MongoDB servern
        'servers' => array(
            	array(
	                'host' => Mongo::DEFAULT_HOST,
	                'port' => Mongo::DEFAULT_PORT,
	                'username' => null,
	                'password' => null,
        	)
        )
);

$session = new MongoSession($_config);

Der obige Code zeigt wie man MongoSession mit Hilfe eines Array umkonfigurieren kann. Im Vergleich zur ursprünglichen Implementierung ist hier die Möglichkeit hinzugekommen persistente Verbindungen zum Server aufzubauen. Diese muss allerdings mit einem global (auf dem Server) eindeutigem Namen versehen werden, da sie sonst von jedem auf dem gleichen Server wiederverwendet werden kann.

Download

Das Projekt wird auf Github gehostet. Jeder der die Klasse verwenden möchte kann sich die aktuellste Version direkt von Github herunterladen.

Alternativ kann das Projekt natürlich auch mit git geklont werden:

git clone git://github.com/halfdan/MongoSession.git