AJAX mit Ruby on Rails und :remote => true

Mit :remote => true bietet das das Ruby Webframework Rails eine sehr einfache Methode um mit Hilfe von AJAX eine Webseite zu aktualisieren. Dieses kann z.B. einfach zu HTML-Elementen wie Formulare, Buttons, Links und Checkboxen hinzugefügt werden. Dadurch werden z.B. gefüllte Formulare nicht mehr wie gewohnt an den Webserver gesendet, sondern mit AJAX. Man erspart dem Benutzer dadurch einen lästigen ggf. langwierigen Seitenaufbau. Im Gegenzug muss man sich aber selber um eine Aktualisierung der Webseite mit Hilfe von jQuery oder JavaScript kümmern.

Folgender Code in einem View erstellt eine Checkbox welche bei einem Klick mit Hilfe von AJAX einen HTTP Post an die angeben URL sendet:

check_box_tag( 
  "my_checkbox", "i_am_checked", false, 
  data: { 
    remote: true, 
    url: "my_checkbox/click", 
    method: "POST" 
  }
)

Der Request muss in diesem Fall vom my_checkbox Controller angenommen und verarbeitet werden. Um die Ansicht des Benutzers zu ändern schickt man mit den bekannten Rails Methoden Javascript an den Browser zurück. Im my_checkbox_controller.rb erweitert man z.B. die respond_to einfach um ein format.js:

def click
  respond_to do |format|
    format.js {}
  end
end

Der dazugehörigen View (click.js.erb) wird somit an den Browser zurück gesendet und man kann per JavaScript die Webseite aktualisieren:

console.log('I am the response!')
alert('You clicked the checkbox!')

Rails bietet mit :remote=>true somit eine wirklich einfach Methode um AJAX für seine Webseite einzusetzen!

Achim Ledermüller
Achim Ledermüller
Lead Senior Systems Engineer

Der Exil Regensburger kam 2012 zu NETWAYS, nachdem er dort sein Wirtschaftsinformatik Studium beendet hatte. In der Managed Services Abteilung ist unter anderem für die Automatisierung des RZ-Betriebs und der Evaluierung und Einführung neuer Technologien zuständig.

Ruby Versionsverwaltung mit RVM

Aufgrund von aktuellen Warnungen einer Sicherheitslücke für die Skript-Sprache Ruby und dessen Framework Rails, möchten wir noch einmal die Versionsverwaltung von Ruby und dessen Gems mit RVM in Erinnerung rufen. Ich gehe daher jetzt nicht im Detail auf die Installation oder die Benutzung ein, sondern beschreibe eine einfache Möglichkeit, die Verwaltung und Pflege solcher Patches automatisiert durchführen zu lassen.
Denkbar ist dies z.B. mit Puppet, welches über Module für Ruby und RVM die Verwaltung übernimmt. Hier bildet sich die Abhängigkeit an die aktuelle oder eine bestimmt Version vom Ruby und den Gems. Update-Zyklen können bei jedem Lauf mit ausgeführt werden, welche bei Neuerungen einen Patch oder ein Update triggern. Somit können wichtige Patches über die Repos oder die Gems automatisch bei den Kontrollen des Puppets installiert werden.