Projektbezogene irb-Historie für Rails

ruby rails irb

Problem: Wenn man mit rails c in der Console mit irb (interactive Ruby) arbeitet, hat man nur eine globale History. Diese liegt im home-Verzeichnis des Users unter .irb_history (aber .irb-history wenn man RVM benutzt). Das ist unschön, denn wenn man an einem Projekt arbeitet, möchte man auch nur den dafür relevanten Teil der History sehen.

Abhilfe schafft eine auf Github gefundene Konfigurationsdatei .irbrc im Homeverzeichnis. Diese speichert die Kommando-Historie fortan im Rails-Projektverzeichnis, »normale« Ruby-Arbeit aber weiterhin in der globalen Historie im home-Verzeichnis:

  # ~/.irbrc
  require 'irb/completion'
  require 'irb/ext/save-history'
  IRB.conf[:SAVE_HISTORY] = 1000
  if defined?(::Rails)
    IRB.conf[:HISTORY_FILE] = File.join(ENV['PWD'], '.irb-history')
  else
    IRB.conf[:HISTORY_FILE] = File.join(ENV['HOME'], '.irb-history')
  end

Fortan liegt eine .irb-history im Rails-Projektverzeichnis. Man sollte diese dann in die .gitignore aufnehmen.

Bonustipp: Wenn man in der Rails-Console mit Objekten arbeitet, kann die ständige Ausgabe der im Hintergrund ablaufenden SQl-Kommandos stören. Mit dem folgenden Befehl wird diese für die aktuelle irb-Session abgeschaltet:

  ActiveRecord::Base.logger = nil

Eine populäre Alternative zu irb ist pry. pry hat viele Features, fast schon zu viele, weshalb ich irb bevorzuge.

Ein Happen Dynamik: isso installieren und in ein statisches jekyll-Blog einbinden

isso python jekyll

Statische Blog-Systeme sind schön und gut, ein bisschen Dynamik braucht man aber schon. Z.B. für Kommentare, auch wenn die große Zeit des Kommentierens in Blogs wohl vorbei ist. Der Meinungssturm tobt heutzutage in Social Media…

Datensammler wie Disqus sind indiskutabel, also denken sich die Leute groteske Sachen aus wie Kommentare mit irgendeinem Formprozessor irgendwo in der Wolke zu verarbeiten und dann daraus einen commit auf ein Github-Repo auszulösen. Sinnvoller erscheinen da schon sich als datenschutzfreundlicher gebende gehostete Kommentardienste wie RemarkBox oder comment.sh.

Letztere bieten eine gehostete Version von isso an, das in meinen Blogs schon länger werkelt isso. Das ist ein Kommentarsystem für den eigenen Server, das man wie disqus und Co. per JavaScript in seine statischen Seiten einbinden kann.

isso funktioniert recht gut, wenn es einmal läuft, es hat aber einen großen Haken: Es ist in Python geschrieben, und es gibt nun einmal (für mich zumindest) nix Schlimmeres als das Rumgemache mit virtualenv, pip, easy_install und den diversen rummäandernden Python-Versionen…

Es begab sich, dass ich isso neu installieren musste und die Erstinstallation damals nicht dokumentiert hatte. Damit das nicht noch einmal passiert, habe ich es diesmal aufgeschrieben und hier abgelegt. Vielleicht ist das ja auch noch für jemanden außer mir nützlich…

Weiterlesen…

Erlesenes I

erlesenes ruby rails

Ihr kennt das. Wenn man durch Twitter und den RSS-Reader klickt, sammeln sich immer Links an, die man garantiert später noch einmal gründlich lesen wird (vielleicht)…

Diese werden hier in nil? ab sofort von Zeit zu Zeit in der Rubrik »Erlesenes« gesammelt und rausgehauen.

Rails 6 steht vor der Tür: »Rails 6.0.0 beta2 released«. Eine der interessantesten Neuerungen ist das Ersetzen der alten mit Sprockets realisierten JavaScript-Asset-Pipeline durch eine neue Lösung mit webpack. Ein etwas unnötig »übercool« verfasster aber nichtsdestotrotz informativer Artikel von »blackninja dojo« erklärt den Umgang damit: »Webpack, Webpacker and Modules, Oh My! How to Add Javascript to Ruby on Rails«.

Auch sehr nützlich in Rails 6: Der Vergleich von Date-, DateTime- und Time-Objekten wird einfacher durch zwei neue Methoden namens before? und after?: »Rails 6 adds before? and after? methods to Date, DateTime, Time, and TimeWithZone.«.

Apropos Ruby, ein Artikel bei »AppSignal« geht sehr detailliert auf die Funktionsweise und Unterschiede von dup und clone ein: »Diving into Ruby's #dup and #clone«.

Noch ein lesenswerter Blogbeitrag von »AppSignal«: »An instrumental intro to GraphQL with Ruby«. GraphQL benutzen die coolen Dev-Girls und -Boys aus der JavaScript-Szene als Alternative zu REST zum Abfragen von APIs, z.B. in Gatsby. Der Artikel erläutert anhand einer Beispielapplikation, wie auch wir uncoolen Ruby-Devs GraphQL implementieren können…

Vielleicht mag man Ruby, aber möchte nicht unbedingt Rails benutzen. Evtl. findet man dann hier eine Alternative: »8 Ruby frameworks that aren’t Rails«. Darin finden sich alte Bekannte wie Sinatra oder Hanami, aber auch (mir zumindest) unbekannte Newcomer wie Ramaze und NYNY…

Oder man wechselt gleich die Sprache und taucht ein in die Abgründe Funktionaler Programmierung. Populär ist aktuell Elixir. Ein Artikel von MLSDev gibt Hilfe bei der Entscheidung: »Elixir Programming: Facts to Know for Better App Development«.

Ein hübsches Spielzeug: Grid Divisions. Auf reddit wird erklärt, wofür das gut sein soll…

jQuery soll ja angeblich tot sein, aber so ganz wohl doch nicht: »15 Best jQuery Image Galleries«.

Und wenn die Langeweile plagt, warum nicht einfach mal einen Texteditor in C programmieren? »Build Your Own Text Editor«