Posts tagged Octopress

Ich habe mal Octopress aktualisert

:: Homepage, Octopress

Neulich fiel mir auf, dass die Suchfunktion, die auf Google basiert, nicht nur auf der eigenen Homepage, sondern im “gesamten” Suchindex von Google gesucht hat. Eben flatterte dieser Tweet mit Link zu einem Fix an mir vorbei und da hat sich wohl die API geändert.

Octopress-Tweet

Octopress-Tweet

Also habe ich mich einmal an den Hinweisen zum Aktualisieren von Octopress orientiert. Hierzu werden die folgenden Schritte vorgeschlagen:

git pull octopress master      # Get the latest Octopress
bundle install                 # Keep gems updated
rake update_source             # update the template's source
rake update_style              # update the template's style

Soweit lief das auch. Es tauchten anschließend zwei Probleme auf:

  1. Das execjs jammerte, dass ihm irgendwie eine JavaScript-Bibliothek fehlte. Nach kurzer Recherche gab es die Empfehlung, die Zeile gem 'therubyracer' in das Gemfile aufzunehmen. Okay, das funktionierte schon einmal.

  2. Bei den Feeds für die Kategorien jammerte das Octopress ein ungültiges Layout an. In category_feed.xml stand in der Tat layout: nil. Ich habe das auf layout: page geändert. Nun tat auch dies.

Mit dem Update funktioniert nun auch das Such-Formular wieder.

Ergänzung: Ich lasse das Jekyll und Octopress in einem Docker-Container laufen und irgendwie bekam ich bei rake preview meine Seite nicht mehr zu sehen. Da ich mich mit Ruby und den Komponenten nicht so gut auskenne, weiß ich nicht, ob mein “Fix” so gut ist: Ich habe im Rakefile den rackup-Aufruf um den Parameter -o 0.0.0.0 ergänzt. Dann bekam ich vom Host wieder eine Verbindung zum Webserver im Octopress-Container.

Update vom 04. Januar 2014: Nach einem kurzen Gespräch via Twitter habe ich mich entschieden, den eingebauten Server doch wieder so zu belassen, wie es im Rakefile ursprünglich stand. Statt dessen habe ich einfach in dem Docker-Container einen nginx hinzuinstalliert, der dann mein public-Verzeichnis an den Port 4000 ausliefert. So funktioniert es wieder prima: Ich starte den nginx und lasse dann das rake watch laufen, um die Seiten immer wieder neu zu erzeugen, wenn sich Dinge geändert haben.

Migration alter Blog-Einträge

:: Homepage, Org-Mode, Octopress

Es kamen lange Winterabende und ich habe die alten Blog-Einträge von der mittels Org-Mode erstellten Seite hier nach Octopress migriert. Im Archiv sind diese zu finden und die Links etc. sollten nun auch passend mit migriert worden sein.

Bei der Konvertierung habe ich ein Programm kennengelernt, das mir sehr geholfen hat: Pandoc. Das ist ein Konverter, der Text- und Markupdateien hin und her konvertieren kann. Dabei beherrscht er eine ganze Reihe von Formaten. Insbesondere kann er das Org-Mode-Format (das ich für viele Dinge verwende) ebenso wie LaTeX und Markdown (daneben aber auch noch eine Legion von Formaten).

Da mein Hauptdateiformat ohnehin “Textdateien” sind (“Never trust a file that isn’t ASCII”) ist das sehr praktisch, um zwischen verschiedenen Markup-Formaten hin und her zu springen.

Für die Migration meine Blog-Einträge lief dies wie folgt: Ich hatte die in der alten Homepage mit Org-Mode und Org-Jekyll erstellt. Dabei hatte das Org-Jekyll-Modul entsprechende HTML-Dateien mit einem YAML-Header erzeugt. Mittels Pandoc konnte ich die nun wieder nach Markdown konvertieren, habe die YAML-Header ein wenig angepasst, Kategorien aktualisiert und noch mal das Markup zwecks Zeilenumbrüche, Fußnoten und Links geprüft und leicht angepasst. Insgesamt sehr schnell bewältigbar.

Dieser ganze Zoo rund um Markdown und andere ähnliche Formate ist zwar manchmal ein bisschen unübersichtlich, aber mir gefällt das sehr gut, dass man mit wenig Markup schön Textdateien strukturieren kann und dann mit Pandoc auch gut hin und her konvertieren kann.

Unicode support for Octopress

:: Docker, Octopress, IT

Well, it seems Octopress/Jekyll would like to have a locale set for UTF–8 support. I followed this (text in German) hint and now my Dockerfile looks like this:

# dockerfile for octopress

FROM ubuntu:14.04
MAINTAINER krrrcks <krrrcks@krrrcks.net>
ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update; \
  apt-get -q -y upgrade
RUN /usr/sbin/locale-gen en_US.UTF-8; \
  update-locale LANG=en_US.UTF-8
RUN apt-get -q -y install git curl; \
  apt-get clean
RUN git clone git://github.com/imathis/octopress.git /opt/octopress
RUN curl -L https://get.rvm.io | bash -s stable --ruby
ENV HOME /root
RUN echo "export LC_ALL=en_US.UTF-8" >> /root/.bashrc
RUN echo "export LANG=en_US.UTF-8" >> /root/.bashrc
RUN echo "source /usr/local/rvm/scripts/rvm" >> /root/.bashrc; 
RUN /bin/bash -l -c "source /usr/local/rvm/scripts/rvm; \
  rvm install 1.9.3; \
  rvm use 1.9.3; \
  rvm rubygems latest; \
  cd /opt/octopress; \
  gem install bundler; \
  bundle install; \
  rake install" 
RUN echo "rvm use 1.9.3" >> /root/.bashrc

WORKDIR /opt/octopress
EXPOSE 4000
CMD ["/bin/bash"] 

After playing around with Docker and Octopress I put the whole /opt/octopress folder on my host machine and then restarted the image with the -v flag. Therefore I can edit the files on my host machine with my favorite editor and use the container only for producing the HTML files, for preview and for publishing.

The rake preview is a neat feature because the server always looks for changed files and produces the HTML files on the fly. That means I can edit the files in my editor and could see the resulting pages in a browser nearly the same time.

Relaunch fast fertig

:: Homepage, Octopress

So, nach einigem Gefummel mit Ruby und Octopress und den Weiterleitungsmöglichkeiten meines Hosters ist die Sache wohl bald so am laufen, wie ich mir das vorstelle. Es fehlt noch ein wenig das Eindeutschen der Octopress-Texte und vielleicht so eine Kategorien-Liste rechts.

Ansonsten habe ich, um der “Gem-Hölle” zu entgehen, das Octopress in einen Docker-Container gepackt; hier ist ein Link zu dem verwendeten Dockerfile. Ich habe es dann auch so gemacht, dass ich das /opt/octopress-Verzeichnis auf den Host-Rechner verschoben habe und in den Container als Volume hineinpacke. So kann ich auf dem Host-Rechner ganz bequem mit dem Emacs die Files editieren und verwende den Container nur noch für die Erstellung, das “Preview” und für das Hochladen.

Die “preview”-Funktion ist übrigens ein wirklich nettes Features: Die kann man derart nutzen, dass ein Webserver den aktuellen Stand lokal ausliefert. Dabei beobachtet der Dienst, ob sich Dateien ändern und erstellt unmittelbar wieder die HTML-Seiten. So kann man bequem im Editor das Markdown bearbeiten und im Browser daneben das fertige Ergebnis beurteilen.

Ein Relaunch

:: Homepage, Octopress

Ich denke, mir geht es wie vielen: Nach einer gewissen Zeit, in der das bisherige Blog, die bisherige Web-Seite nicht gepflegt wird, steht irgendwann ein Neubeginn an, dann gleich mit einem “Relaunch” und vielen neuen und guten Vorsätzen.

Ich bin zwar nach wie vor ein großer Freund und Nutzer von Org-Mode, aber für das Führen eines Blogs erschien mir der Ablauf doch immer recht umständlich. Ich habe mir daher einmal Octopress angeschaut (vor allem, da die Blog-Funktion von Org-Mode, die ich nutzte, auch mit Jekyll arbeitete) und finde das eigentlich ganz hübsch. Einzig so ein wenig “eindeutschen” sollte ich es noch. Außerdem ist das Umleiten von der bisherigen Domain hierher noch ein wenig kaputt; mein bisheriger Hoster lässt mich das nicht so schön mit CNAME-Einträgen gestalten, wie das eigentlich gedacht ist.

Nun also ein Relaunch, aber ohne große Vorsätze. Es wird hier also nur selten und nur wenig zu lesen geben.

My Dockerfile for setting up Octopress

:: Docker, Octopress, IT

After my trouble with installing all the dependencies for Octopress I came up with the following Dockerfile for Docker. This follows the instructions from the Octopress homepage and uses RVM for managing the ruby dependencies.

# dockerfile for octopress

FROM ubuntu:14.04
MAINTAINER krrrcks <krrrcks@krrrcks.net>
ENV DEBIAN_FRONTEND noninteractive

RUN apt-get update; \
  apt-get -q -y upgrade
RUN apt-get -q -y install git curl; \
  apt-get clean
RUN git clone git://github.com/imathis/octopress.git /opt/octopress
RUN curl -L https://get.rvm.io | bash -s stable --ruby
ENV HOME /root
RUN echo "source /usr/local/rvm/scripts/rvm" >> /root/.bashrc; 
RUN /bin/bash -l -c "source /usr/local/rvm/scripts/rvm; \
  rvm install 1.9.3; \
  rvm use 1.9.3; \
  rvm rubygems latest; \
  cd /opt/octopress; \
  gem install bundler; \
  bundle install; \
  rake install" 
RUN echo "rvm use 1.9.3" >> /root/.bashrc

WORKDIR /opt/octopress
EXPOSE 4000
CMD ["/bin/bash"]