Pages Menu
Rss
Categories Menu

Gepostet by on Mrz 1, 2013 in Coding | Keine Kommentare

Mercurial merges mit nicht eingecheckten Änderungen

droplets-75Machmal nervt Mercurial wirklich und man wünscht sich einen staging Bereich für nicht eingecheckte Änderungen wie bei Git. Es kann nämlich durchaus passieren, dass man ein paar Changesets aus einem entfernten Repository holen und einen merge bzw. rebase machen muss, obwohl die eigenen Änderungen noch nicht eingecheckt sind.

Mercurial erlaubt aber genau dies nicht, dann kommt es nämlich zu folgender Meldung:

% hg merge
abort: outstanding uncommitted changes

Es gibt aber einen relativ einfachen Weg, um das Problem zu umgehen. Man exportiert temporär die eigenen Änderungen in einen Patch und macht diese dann im Repository rückgängig:

% hg diff > /tmp/local_changes.diff
% hg revert -a

Jetzt kann der eigentliche merge bzw. rebase ausgeführt werden, da das lokale Verzeichnis wieder sauber ist. Danach können die eigenen Sachen wieder importiert werden:

% hg import --no-commit /tmp/local_changes.diff

Es ist jetzt nicht der schönste Weg, aber es funktioniert wenigstens…

Mehr

Gepostet by on Feb 16, 2012 in Coding, Ruby | Keine Kommentare

Rails 3 Routing mit Bedingungen

Ja es ist lange her, seit dem letzten Artikel :-( Es ist also mehr als überfällig wieder etwas über Rails zu schreiben.

Vor kurzem bin ich über eine recht nette Sache beim Rails routing gestolpert, nämlich den constraints. In Rails 2 waren diese noch als requirements bekannt, allerdings waren sie damals nicht so mächtig. So konnte man mit Rails 2 nur einfache Bedingungen für Routen definieren, z.B. dass ein übergebener Wert eine 4-stellige Zahl sein muss. Mit Rails 3 ist man hier nun wesentlich flexibler geworden, es lassen sich z.B. Bedingungen anhand das UserAgents festlegen, oder direkt die remote IP in einer Datenbank nachschlagen lassen, bevor die Route überhaupt geprüft wird. So könnte man z.B. eine dynamische IP basierte Zugriffskontrolle für Ressourcen aufbauen ohne umfangreiche Konfigurationen an Webservern vornehmen zu müssen.

Mehr

Gepostet by on Mrz 21, 2011 in Ruby | Keine Kommentare

Ruby Entwicklung mit RVM

Die Entwicklung mit Ruby, vor allem mit Ruby on Rails, ist wirklich traumhaft. Webprojekte können mit Ruby on Rails relativ schnell umgesetzt werden. Das einzige was wirklich traurig ist, ist das Handling der benötigten Gems. Im Vergleich zu Python und Django werden sehr viele Gems benötigt. Das erinnert etwas an das grausame CPAN von Perl, wo einige Perl Module eine Unzahl von Abhängigkeiten haben, so dass schnell 100 Module installiert sind.

Ein ähnliches Problem kann mit Ruby aufkommen. Sobald sich mehrere Projekte angehäuft haben, werden u.U. verschiede Ruby bzw. Rails Versionen, wenn nicht sogar jRuby benötigt. Sind alle Gems direkt im System installiert, kann das ganze schon ziemlich unübersichtlich werden.

Genau dieses Problem löst RVM, hierbei handelt es sich um ein Tool, mit welchem sich unterschiedliche Ruby Versionen bzw. Gems verwalten lassen. Alles wird hier direkt in das Home Verzeichnis des Benutzers installiert. Sobald RVM in die lokale .bashrc eingebunden ist, kann per Kommando die Ruby Installation gewechselt werden.

Mehr

Gepostet by on Nov 3, 2010 in Ruby | Keine Kommentare

has_many :through mit Checkboxen

Nehmen wir an, wir haben eine Rails Applikation mit einer Many-to-Many Beziehung, bei welcher die Verknüpfungen über Checkboxen und nicht über Multiselect Listen oder ähnliches verwirklicht werden sollen. Die Umsetzung ist gar nicht mal so aufwändig…;-)

Als Beispiel könnte man die Bestellung einer Pizza nehmen. Ein Kunde will eine Pizza über ein Formular bestellen. Im Formular werden alle verfügbaren Beläge in einer Liste mit jeweils eine Checkbox dargestellt, so dass der Kunde einfach per Klick auf die Checkboxen die gewünschte Kombination auswählen kann.

Mehr

Gepostet by on Jul 2, 2010 in C | Keine Kommentare

Kleine C-Übung

Heute hat mir ein Kollege einen kleinen C Quelltext geschickt und mich gebeten, das Ergebnis mal nachzuvollziehen, ohne dabei das Programm zu kompilieren. Ich muss sagen, beim ersten Anlauf hatte ich nicht alle Werte der Variablen richtig. Es gibt doch einige Fallstricke ;-)

Mehr