Screencast: Daten an JavaScript übergeben

Fast jeder hatte bereits die Anforderung Daten zwischen einer Rails-Applikation im Backend mit Java-Script im Frontend auszutauschen. Sei es auch nur um bestimmte Teile der Seite mit Java-Script zu markieren (z.B. Highlighting von Navigation oder Suchbegriffen). Es gibt verschiedenste Ansätze und alle bringen ihre eigenen Vor- und Nachteile mit. In diesem Screencast zeigt Ryan Drei verschiedene Ansätze wie es auch implementiert werden kann.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogg

 

Resourcen:

products/index.html.erb

[html]
<%= javascript_tag do %>
window.productsURL = "<%=j products_url %>";
window.products = <%=raw Product.limit(10).to_json %>;
<% end %>
[/html]

app/assets/javascripts/products.js.coffee

[javascript]
jQuery ->
alert productsURL
[/javascript]

products/index.html.erb

[html]
<%= content_tag "div", id: "products", data: {products: Product.limit(10)} do %>
Loading products…
<% end %>
[/html]

app/assets/javascripts/products.js.coffee

[javascript]
jQuery ->
alert $(‚#products‘).data(‚products‘)
[/javascript]

Gemfile

[ruby]
gem ‚gon‘
[/ruby]

layouts/application.html.erb

[html]
<%= include_gon %>
[/html]

products_controller.rb

[ruby]
def index
gon.products = Product.limit(10)
# or
gon.rabl "app/views/products/index.json.rabl", as: "products"
end
[/ruby]

products/index.json.rabl

[javascript]
collection Product.limit(10)

attributes :id, :name, :price
[/javascript]

app/assets/javascripts/products.js.coffee

[javascript]
alert gon.products if gon
[/javascript]

Rails 3.2.1 veröffentlicht

Nur kurz nach dem letzten Release (26. Januar 2012) folgt heute ein weiteres Update. Es sind nur kleiner Veränderungen eingeflossen.

Zu den Veränderungen gehören:

Action Pack:

  • Verbesserung Dokumentation
  • ‚form.select‘ akzeptiert ranges
  • Anpassungen an ‚datetime_select‘

 

Active Record:

  • Die Schwelle für Auto-EXPLAIN wird ignoriert when kein logger vorhanden ist
  • ‚to_s‘ wurde angepasst
  • Mögliche race condition wir abgefangen, wenn zwei Threads gleichzeitig auf das selbe Attribut in der gleichen Klasse zugreifen/verändern möchten.
Active Support:
  • Documentation ergänzt
  • Aktualisierung der Zeitzonen-Information
  • die veraltete Methode ‚ActiveSupport::Base64.decode64‘ ruft nun ‚::Base64.decode64‘ auf
  • Die Konstante ‚ActiveSupport::TaggedLogging::ERROR‘ wird nun richtig initialisiert
Railties:
  • Verbesserung Dokumentation
  • Bei der Generierung von Migrationen werden nun auch weitere Dezimalwerte/Schreibweisen akzeptiert: decimal{1.2}, decimal{1-2}

 

Die Releasenotes sind auch Github verfügbar:

https://gist.github.com/1685812

Ruby on Rails 3.2

Bereits am 20. Januar hatte David die neue Rails-Version angekündigt. Ursprünglich für Dezember letzen Jahres geplant, ist am Wochenende Rails 3.2 veröffentlicht worden.

Wie in den vorherigen Version, ist bei diesem Release wieder Wert auf Geschwindigkeit gelegt worden. Allerdings diesmal auf die Geschwindigkeit während des Developments. In Rails 3.2 werden nun, wenn im Development Environment gestartet, nur die Klassen erneut geladen. So hat man gerade in großen Projekten eine spürbare Geschwindigkeitsverbesserung. Rails 3.2 ist das letzte Release, welches noch Ruby 1.8.x unterstützt. Beginnend mit Rails 4.0 wird Ruby 1.9.3 erforderlich sein.

Weitere Neuerungen sind:

  • Schnelleres Routing und URL-Generierung dur die neue Journey Engine
  • Explain Queries um einen besseren Einblick in die generierten SQL-Statements zu bekommen und ggf. zu prüfen ob die gesetzten Indexes verwendet werden.
  • Tagged Logger um Einträge/Benutzer in Logfiles filtern zu können
  • Active Record Store für die Verwendung von Key/Value Paaren ohne direkt die zugehörige Datenbank installieren zu müssen

Die gesamten Releasenotes inklusive einer Update-Anleitung ist wie auf folgender Seite verfügbar: http://guides.rubyonrails.org/3_2_release_notes.html

Frohe Weihnachten!

Das rubyonrails.de-Team, dessen Familien und Freunde, wünschen allen Lesern frohes Fest und erholsame Tage.
Die letzten Geschenke besorgt…

…den Baum geschmückt, die abschließenden Vorbereitungen fast abgeschlossen und das Fest naht.
Auch wir wollen uns in die lange Reihe der Wünschenden stellen und allen unseren Lesern, Ihren Liebsten, deren Familien und Freunden ein frohes Fest wünschen.
Wir wünschen uns, dass die Festtage für alle erholsam sein werden und das Fest die Strapazen des Jahres vergessen machen.
Allen, die zwischen den Tagen sich ihren Familien, einem Urlaub oder etwas ohne Rechner widmen wollen und rubyonrails.de nicht besuchen, wünschen jetzt schon einen guten Rutsch ins Jahr 2012.
Mögen alle Wünsche, Träume und Vorhaben in Erfüllung gehen und das neue Jahr noch besser verlaufen als das Vergangene.
Wie auch letztes Jahr werden wir Sie/Euch auch diesmal zwischen den Festtagen und dem neuem Jahr mit interessanten Nachrichten aus dem Rails, Ruby und Webumfeld versorgen.
Gegebenenfalls, wenn es nicht genug Neuigkeiten gibt, mit etwas reduziertem Umfang… 🙂

Wir wünschen ein frohes und entspanntes Weihnachtsfest im Kreise der Liebsten!

Das rubyonrails.de-Team

Rails 3.1 veröffentlicht

Wie bereits gestern angekündigt wurde soeben die lang erwartete Rails-Version 3.1 veröffentlicht. Neben den offensichtlichen Neuerungen wie z.B. der Asset-Pipeline, wurde auch wieder die Geschwindigkeit verbessert und Helfer hinzugefügt um die Entwicklung zu vereinfachen.

Dies sind einige der Highlights in diesem Release:

ActionPack

  • ActionPack wurde um die neue Asset Pipeline erweitert Weitere Details: rails guides on the asset pipeline.
  • Streaming wird nun unterstützt. Somit lassen sich generierte Teile sofort zum Client schicken ohne, dass erst die ganze Seite fertig gestellt werden muss.
  • RJS wurde in ein Gem ausgelagert.

ActiveModel

  • attr_accessible akzeptiert nun :as als Option um eine Rolle zu spezifizieren
  • ActiveModel::SecurePassword wurde für sicherere Passwörter hinzugefügt.

ActiveRecord

  • Prepared Statement Caches sind nun in ActiveRecord::Base#create integriert.
  • Associations wurden überarbeitet.
  • default_scope kann nun alle Objekte aufnehmen die die Methode call implementiert haben.
  • Der PostgreSQL Adapter unterstützt nu PostgreSQL in Version 8.2 un neuer.
  • Migrations können nun Rückgängig gemacht werden.
  • Wenn ein Model generiert wird, wird add_index standardmäßig für belongs_to oder references Spalten hinzugefügt.

ActiveResource

  • Das Standardrückgabeformat ist nun JSON.

ActiveSupport

  • ActiveSupport::BufferedLogger setzt nun das Encoding auf BINARY.
  • Mit Object#in?  kann nun getestet werden ob ein Objekt in einem anderen Objekt ist.
  • ActiveSupport::Dependencies::ClassCache hält nun eine Referenz auf erneut ladbare Klassen.
  • weeks_ago und prev_week wurden zu Date/DateTime/Time hinzugefügt.
  • JSON Decoding verwendet nun das multi_json gem which.

Railties

  • UTF-8 wird nun als Standard für DB-Schemas verwendet.
  • Rack::Sendfile Middleware kommt nur zum Einsatz wenn x_sendfile_header gesetzt wurde.
  • Das Alias r für den rails runner ist hinzugekommen.
  • jQuery ist nun die Standard JavaScript Bibliothek.
  • Mit config.force_ssl kann nun eine sichere Verbindung erzwunden werden.

Letzter Release Candidate für Rails 3.1 (3.1.0rc8)

Soeben wurde ein weiterer Release Candidate für Rails 3.1 veröffentlicht. Wenn keine Probleme auftreten, wird morgen 30. August die finale Version veröffentlicht.

Die Liste der Veränderung zum vorherigen Release sind wie immer im Changelog vermerkt: https://github.com/rails/rails/compare/v3.1.0.rc6…v3.1.0.rc8

Release Candidate Rails 3.1.0.rc6

Heute wurde ein weiterer Release-Kandidat für Rails 3.1 veröffentlicht. Wie Rails 3.0.10 und 2.3.14 enthält diese Version Fixes für ein paar Sicherheitslücken die entdeckt wurden.

Die Anpassung sind wie gewohnt in den Changelogs verfügbar:

Changelog Rails 3.1.0: https://github.com/rails/rails/compare/v3.1.0.rc5…v3.1.0.rc6

Security Update für Rails 3.0.10 und 2.3.14

Heute sind neue Version für Rails 3 und 2 erschienen. Die neue Version behebt ein paar Sicherheitslücken und Nutzer sollten wenn möglich auf Ihre Applikationen aktualisieren.

Die Liste der Fixes sind in den jeweiligen Changelogs aufgelistet:

Rails 3.0.10: https://github.com/rails/rails/compare/v3.0.9…v3.0.10

Rails 2.3.14: https://github.com/rails/rails/compare/v2.1.12…v2.1.14

 

 

 

 

 

 

 

 

Screencast: Geocoder

Geocoder ist ein Ruby-Gem mit welchem man geografischen Daten nutzen, Koordination finden, Abstände zwischen Orten und mehr in Ruby und Rails einsetzen kann. Ryan zeigt diese Woche wie es installiert und in einer Rails-App verwendet wird.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
rails g nifty:scaffold location address:string latitude:float longitude:float
rake db:migrate
bundle
[/bash]

Gemfile

[ruby]
gem ‚geocoder‘
[/ruby]

models/location.rb

[ruby]
geocoded_by :address
after_validation :geocode, :if => :address_changed?
[/ruby]

locations_controller.rb

[ruby]
def index
if params[:search].present?
@locations = Location.near(params[:search], 50, :order => :distance)
else
@locations = Location.all
end
end
[/ruby]

locations/show.html.erb

[html]
<%= image_tag "http://maps.google.com/maps/api/staticmap?size=450×300&sensor=false&zoom=16&markers=#{@location.latitude}%2C#{@location.longitude}" %>

<h3>Nearby locations</h3>
<ul>
<% for location in @location.nearbys(10) %>
<li><%= link_to location.address, location %> (<%= location.distance.round(2) %> miles)</li>
<% end %>
</ul>
[/html]

locations/index.html.erb

[html]
<%= form_tag locations_path, :method => :get do %>
<p>
<%= text_field_tag :search, params[:search] %>
<%= submit_tag "Search Near", :name => nil %>
</p>
<% end %>
[/html]

15% Rabatt für Professional Rails Training für rubyonrails.de-Leser

Wie wir schon berichtet haben, findet am 11. und 13. September das
Professional Ruby on Rails Training der Firma innoQ in Ratingen statt
[Artikel-Link].
Für Kurzentschlossene freuen wir uns mitzuteilen, dass unsere Leser
einen Rabatt von 15% auf diese Schulung erhalten!

[Update] Die Schulung findet nun im September statt

Die Abwicklung läuft völlig pragmatisch; kein spezieller Code oder
Gutscheincode etc.
Bei der Anmeldung nur angeben, dass Sie über rubyonrails.de die
Schulung buchen möchten und der Rabatt wird automatisch gewährt.

Wir danken an dieser Stelle innoQ [innoQ-Link] als Sponsor für diese
Aktion und wünschen allen Teilnehmern viel Spaß und Erfolg bei der
Schulung.

Alle Details sind auf der Schulungsseite verfügbar: [Schulungslink]