Screencast: Upgrade auf Rails 3.2

Letzte Woche erschien Rails 3.2 und bringt, wie wir schon berichtet haben, ein paar neue Features mit. Wie diese verwendet werden und wie ein Upgrade durchgeführt werden kann, zeigt Ryan in dieser Woche in seinem Screencast.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogg

 

Resourcen:

Gemfile

[ruby]
gem ‚rails‘, ‚3.2.0‘
group :assets do
gem ’sass-rails‘, " ~> 3.2.3"
gem ‚coffee-rails‘, "~> 3.2.1"
gem ‚uglifier‘, ‚>= 1.0.3‘
end
[/ruby]

terminal

[bash]
bundle update
rails g model product_variation product_id:integer:index name ‚price:decimal{7,2}‘
rails g migration add_properties_to_product_variations properties:text
rake db:migrate
echo -d postgresql -T > ~/.railsrc
[/bash]

rails console

[ruby]
puts Product.order(:name).explain
ActiveRecord::Base.silence_auto_explain { Product.order(:name) }
Product.pluck(:name)
Product.pluck(:id)
Product.select(:name).uniq
Product.where(name: "Foo").first_or_create!
Product.where(name: "Foo").first_or_create!(price: 5)
"Product".safe_constantize
p = ProductVariation.new(color: ‚blue‘, size: 3)
p.color
p.size
p.properties[:color]
[/ruby]

config/development.rb

[ruby]
# Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict

# Log the query plan for queries taking more than this (works
# with SQLite, MySQL, and PostgreSQL)
config.active_record.auto_explain_threshold_in_seconds = 0.5

config.log_tags = [:uuid, :remote_ip]
[/ruby]

config/test.rb

[ruby]
# Raise exception on mass assignment protection for Active Record models
config.active_record.mass_assignment_sanitizer = :strict
[/ruby]

models/product_variation.rb

[ruby]
store :properties, accessors: [:color, :size]
[/ruby]

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