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

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]

Neue Rails Releases (Sicherheitsupdate)

Dieses Release schlißt eine Sicherheitslücke, die unter bestimmten Umständen von Angreifern ausgenutzt werden kann, um die CSRF Schutzmaßnahmen zu umgehen. Betroffen von diesem Problem sind die Rails-Versionebn 2.1.0 und neuer. Applikationen die den CSRF Schutz nicht verwenden sind nicht betroffen.

Das Problem wurde in  Rails 3.0.4  und Rails 2.3.11 behoben. Das Update kann über wie gewohnt über RubyGems erfolgen.

Wenn ein Update übr Gems nicht möglich ist, können folgende Patches verwendet werden:

Weitere Details sind hier erhältlich: http://weblog.rubyonrails.org/2011/2/8/csrf-protection-bypass-in-ruby-on-rails?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+RidingRails+%28Riding+Rails%29

Screencast: Upgrade auf Rails 3 Teil 3

Im dritten und letzten Teil der Rails-3-Upgrade Serie zeigt Ryan wie Warnungen über veraltetete Funktionen und Probleme in der View gelöst werden.

 

Download:

Download(19.6 MB, 9:34)
Alternativer Download für iPod & Apple TV(17.3 MB, 9:34)

 

Resourcen:

 

Quellcode:

[bash]
rake spec
rails plugin install git://github.com/rails/dynamic_form.git
bundle install
rm public/index.html
rm public/images/rail.png
ls script
rm script/server
[/bash]

[ruby]
gem "thinking-sphinx", :require => ‚thinking_sphinx‘, :git => "git://github.com/freelancing-god/thinking-sphinx.git", :branch => "rails3"

# helpers
def textilize(text)
Textilizer.new(text).to_html.html_safe unless text.blank?
end

def title(page_title, show_title = true)
content_for(:title, page_title.to_s)
@show_title = show_title
end
[/ruby]

[html]
<!– layouts/application.html.erb –>
<%= javascript_include_tag ‚jquery‘, ‚rails‘, ‚application‘ %>
<%= csrf_meta_tag %>

<%= content_for?(:side) ? yield(:side) : render(:partial => ’shared/side‘) %>
[/html]

Screencast: Upgrade auf Rails 3 Teil 1

Spätestens nachdem nun der erste Release Kandidat für Rails 3 verfügbar ist, sollten die bestehenden Applikationen auf ihre Kompatibilität zur neuen Version geprüft werden.
In einer mehrteiligen Serie wird Ryan zeigen, auf was man achten muss und wie ein Upgrade erfolgen kann. Im ersten Teil wird eine App mit dem Rails 3 RC aufgesetzt und mit dem rails_upgrade Plugin werden die benötigten Updates ermittelt.

 

Download:

Download(35.3 MB, 11:56)
Alternativer Download für iPod & Apple TV(28.2 MB, 11:56)

 

Resourcen:

 

Quellcode:

[bash]
rvm update
rvm reload
rvm install 1.9.2
gem install rails –pre
rvm system
script/plugin install git://github.com/rails/rails_upgrade.git
rails -v
rake rails:upgrade:check
rake rails:upgrade:backup
rvm 1.9.2
rails new . -d mysql
bundle install
rails s
[/bash]

[ruby]
# config/application.rb
class Object
def returning(value)
yield(value)
value
end
end
# …
config.time_zone = ‚Pacific Time (US & Canada)‘

# Gemfile
gem "RedCloth", ">= 4.0", :require => ‚redcloth‘
gem "coderay"
gem "acts_as_list"
gem "will_paginate"
gem "thinking-sphinx", ">= 2.0.0.rc1", :require => ‚thinking_sphinx‘
gem "whenever", :require => false
[/ruby]

Ruby on Rails 2.3.6 erschienen

Die Zweier Version von Ruby on Rails hat ein weiteres Update erfahren und soeben wurde Version 2.3.6 veröffentlicht. In den letzten sechs Monaten sind Bugfixes, einige neue Features und Vorbereitungen zu Rails 3 eingeflossen. Es wurden weitere Teile als veraltet/deprecated markiert, damit Entwickler Ihre Applikationen für das nächste große Release vorbereiten können. Jeremy Camper schreibt, dass bestehende Rails-Applikationen die keine Warnungen über veraltete Kompontenten werfen, einen unproblematischen Übergang zu Rails 3 erwarten können.

Folgende Änderungen sind in das Release geflossen:

Action Pack

Active Record

Active Support

  • Upgrade i18n von 1.3.3 zu 1.3.7.
  • Upgrade TZInfo von 0.3.12 zu 0.3.16.
  • Multibyte: Geschwindigkeitesverbeserung.
  • JSON: Es kommt nun YAJL, wenn vorhanden, beim decodieren von JSON  zum Einsatzt.  gem install yajl-ruby
  • Testing: Die Methoden assert_blank und assert_present sind hinzugekomen. Weitere Details: http://github.com/rails/rails/commit/4b08679ba9627884d531cf59a9bb2fd1d2c86d62.
  • Core: Rückportierung von Object#singleton_class von Ruby 1.8.8,
  • Object#metaclass ist nun depracted.
  • Core: Object#presence ist hinzugekommen und gibt, wenn es Verfügbar ist ( #present?), das Objekt zurück. Wenn das Objekt nicht verfügbar ist wird nil zurückgeben. Zum Beispiel: region = params[:state].presence || params[:country].presence || 'US'
  • Core:  Enumerable#exclude? ist als Gegenstück zu include? hinzugekommen.
  • Core: Array#rand wurde zu Array#random_element umbenannt umd Namensüberschneidung mit  Kernel#rand zu vermeiden.
  • Core: Date# und Time#last_(month|year) wurden zu #prev_(month|year) umbenannt, um die Unterstützung in Ruby 1.9 zu gewährleisten.

Active Resource

  • JSON: setActiveResource::Base.include_root_in_json = true zur Serialisierung von Modelnamen, anstatt einfacher Hash-Attributen. Der Standardwert ist false

Action Mailer

  • Upgrade  von TMail von 1.2.3 auf 1.2.7.

Railties

  • Warnungen über veraltete Komponenten in RubyGems 1.3.6.

Die vollständige Liste der Änderungen ist im Commit Log einsehbar: http://github.com/rails/rails/compare/v2.3.5…v2.3.6

Update von Rails 2 nach Rails 3

Um eine Rails 2 Applikation nach Rails 3 zu migrieren oder aktualisieren sind ein paar Dinge zu beachten. Rizwan Reza von Engine Yard hat hierzu eine ausführliche Beschreibung zusammengestellt und einen entsprechenden Screencast dazu erstellt.

Rizwan beschreibt alle nötigen Schritte um auf die neue Version umzusteigen. Nebenbei erfährt der Leser und Zuschauer mehr über die Neuerungen und wie man mit diesen umgeht.

Link zum Artikel: http://railsdispatch.com/posts/upgrading-a-rails-2-app-to-rails-3

 

Der Rails 3 Upgrade Screencast zu dem Artikel:

 

Update auf Rails 3 in 25 Minuten

…wir hoffen es dauert nicht mehr lange bis die neue Rails Version freigegeben wird. Damit der Übergang der eigenen Applikation so einfach wie möglich wird, haben wir euch schon diverse Seiten und Tips gegeben. Jetzt gibt es von Geoffrey Grosenbach, dem Macher von Peepcode, einen Screencast, in dem er das Update-Szenario festgehalten hat.

Geoffrey zeigt an einem Beispiel, seiner Screenshot-Seite, wie er den Wechsel von Rails 2 uf Rails 3 vollzogen hat.
Das Filmmaterial findet ihr als Download in einer Desktop und in einer Ipod-Version auf der Projektseite vor.

Desktopversion: http://peepcode.com/system/uploads/2010/peepcode-free-004-live-coding-rails-3-upgrade.mov

Ipodversion: http://peepcode.com/system/uploads/2010/peepcode-free-004-live-coding-rails-3-upgrade.m4v

Weitere Details zu den Screencasts: http://blog.peepcode.com/tutorials/2010/live-coding-rails-3-upgrade

Upgrade zu Snow Leopard [Update]

Seit letztem Freitag ist die neue OSX Version Snow Leopard verfügbar. Die Auslieferung hat begonnen, und Ruby und Rails Entwickler sollten sich mit der geänderten Version befassen, damit es keiner bösen Überraschungen gibt. Sowohl im Webblog auf rubyonrails.com als auch auf Github gibt es Einträge und Hilfen dazu.

Auf rubyonrails.com hat Matt Aimonetti eine Zusammenfassung der nötigen Schritte  veröffentlicht:

http://weblog.rubyonrails.org/2009/8/30/upgrading-to-snow-leopard

Einen ähnlichen Eintrag findet ihr auf Github:

http://gist.github.com/177368

Da beide Artikel sich mit dem gleichen Thema überschneiden sie sich an manchen Stellen. Dennoch findet man in beiden genug Informationen um für das Upgrade bewappnet zu sein.

UPDATE:

Wir haben einen weiteren Link für euch gefunden der sich mit dem Upgrade auf Snow Leopard beschäftigt: http://afreshcup.com/2009/09/02/migrating-to-snow-leopard-for-rails-development-a-definitive-guide/