[UPDATE] Verlosung für Freikarte läuft aus

[Update] Unter allen Teilnehmer haben wir die Gewinnerin gezogen. Wir danken allen Teilnehmern. Vielleicht klappt es bei der nächsten Verlosung 🙂 Nachmals unsere Gratulation an die Gewinnerin und viel Spaß auf der RailsWayCon 2010.

In wenigen Tagen läuft die Verlosung der Freikarte für die RailsWayCon 2010 aus. Die Freikarte ist gültig für die gesamte Konferenz von Montag bis Mittwoch. Am Freitag ist der Einsendeschluss und unentschlossene Teilnehmer haben noch Gelegenheit ihr Glück zu versuchen.

Die Details zu der Verlosung gibt es hier: http://www.rubyonrails.de/2010/03/freikarte-fur-die-railswaycon-2010/

Wir wünschen allen Teilnehmern viel Glück!

Screencast: Validieren mit Rails 3

Rails 3 bietet viel Neues bzgl. Validierungen. Ryan zeigt diese Woche wie die Neuerungen benutzt und komplexe Validierungen aufgeräumt werden können.

 

Download:

Download (14.4 MB, 9:53)
Alternativer Download für iPod & Apple TV (14.3 MB, 9:53)

 

Resourcen:

 

Quellcode:

[bash]
gem install rails –pre
gem cleanup
rails store
cd store
rails g scaffold user name:string email:string
rake db:migrate
[/bash]

[html]
<!– users/_form.html.erb –>
<%= form_for(@user) do |f| %>
<%= render "shared/error_messages", :target => @user %>

<div class="field">
<%= f.label :name %><%= mark_required(@user, :name) %><br />
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :email %><%= mark_required(@user, :email) %><br />
<%= f.text_field :email %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>

<!– shared/_error_messages.html.erb –>
<% if target.errors.any? %>
<div id="errorExplanation">
<h2><%= pluralize(target.errors.count, "error") %> prohibited this record from being saved:</h2>
<ul>
<% target.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
[/html]

[ruby]
# application_helper.rb
def mark_required(object, attribute)
"*" if object.class.validators_on(attribute).map(&:class).include? ActiveModel::Validations::PresenceValidator
end

# models/user.rb
validates :email, :presence => true, :uniqueness => true, :email_format => true

# lib/email_format_validator.rb
class EmailFormatValidator < ActiveModel::EachValidator
def validate_each(object, attribute, value)
unless value =~ /^([^@s]+)@((?:[-a-z0-9]+.)+[a-z]{2,})$/i
object.errors[attribute] << (options[:message] || "is not formatted properly")
end
end
end
[/ruby]

Haml/Sass 3 RC 1 veröffentlicht

Haml und Sass 3 ist als Release Candidate erschienen und steht zum Download bereit. Dieses Release bringt nicht nur einige Verbesserungen für Haml mit, sondern auch Sass. RC1 ist Feature-Complete und das Team konzentriert sich auf Bugfixes und andere Verbesserungen.

Diese Version lässt sich wie gekannt über gem installieren und verproben:

Installation:

[bash]
gem install haml –pre
[/bash]

Die Details zu den Änderungen können im Changelog nachgelesen werden:
Haml Changelog: http://beta.haml-lang.com/docs/yardoc/HAML_REFERENCE.md.html

Sass Changelog: http://beta.sass-lang.com/docs/yardoc/SASS_REFERENCE.md.html

 

Die Projekte findet ihr unter folgenden Adressen:
– Haml: http://haml-lang.com/
– Sass: http://sass-lang.com/

Screencast: Devise anpassen

In dieser Woche zeigt Ryan Devise an die eigenen Bedürfnisse angepasst werden kann. Dabei erklärt er auch wie die Views, das Routing, Validations und Authentication funktionieren.

 

Download:

Download (21.6 MB, 7:52)
Alternativer Download für iPod & Apple TV (16.9 MB, 7:52)

 

Resourcen:

 

Quellcode:

[bash]
rails generate devise_views
rails generate migration add_username_to_users username:string
rake db:migrate
rails c
[/bash]

[ruby]
# projects_controller.rb
before_filter :authenticate_user!, :except => [:show, :index]

# routes.rb
devise_for :users, :path_names => { :sign_up => "register" }

# config/initializers/devise.rb
config.authentication_keys = [ :username ]
config.password_length = 4..20
[/ruby]

[html]
<!– devise/sessions/new.html.erb –>
<% title "Sign in" %>

<%= form_for(resource_name, resource, :url => session_path(resource_name)) do |f| %>
<p><%= f.label :username %><br />
<%= f.text_field :username %></p>

<p><%= f.label :password %><br />
<%= f.password_field :password %></p>

<!– … –>
<% end %>
[/html]

Screencast: Einführung Devise

Devise ist ein Authentifizierungslösung welche jegliche Controller-Logik als auch Views abdeckt. Im dieswöchigen Screencast könnt ihr sehen wie es eingesetzt werden kann.

 

Download:

Download (32.2 MB, 10:36)
Alternative Download fÜr iPod & Apple TV (26.8 MB, 10:36)

 

Resourcen:

 

Quellcode:

[bash]
bundle install
rails generate devise_install
rails generate devise User
rake db:migrate
rake routes
[/bash]

[ruby]
# Gemfile
gem ‚devise‘, ‚1.1.rc0‘

# config/environments/development.rb
config.action_mailer.default_url_options = { :host => ‚localhost:3000‘ }

# models/user.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :lockable, :timeoutable, :confirmable and :activatable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation
end

# migration
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
# t.confirmable
t.recoverable
t.rememberable
t.trackable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both

t.timestamps
end

add_index :users, :email, :unique => true
# add_index :users, :confirmation_token, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end

def self.down
drop_table :users
end
end

# migration
create_table(:users) do |t|
t.database_authenticatable :null => false
# t.confirmable
t.recoverable
t.rememberable
t.trackable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both

t.timestamps
end

add_index :users, :email, :unique => true
# add_index :users, :confirmation_token, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :unlock_token, :unique => true
[/ruby]

[html]
<!– layouts/application.html.erb –>
<div id="user_nav">
<% if user_signed_in? %>
Signed in as <%= current_user.email %>. Not you?
<%= link_to "Sign out", destroy_user_session_path %>
<% else %>
<%= link_to "Sign up", new_user_registration_path %> or <%= link_to "sign in", new_user_session_path %>
<% end %>
</div>
[/html]

Screencast: ERB Blöcke in Rails 3

In Rails 3 Beta 2 hat sich die Verwendung von Blöcken in ERB Templates geändert. Ryan zeigt in dieser Woche wie sie benutzt werden können.

 

Download:

Download (21.2 MB, 9:41)
Alternativer Download für iPod & Apple TV (18 MB, 9:41)

 

Resourcen:

 

Quellcode:

[bash]
rvm install ruby-head
rvm ruby-head
gem install rails –pre
bundle install
[/bash]

[ruby]
# Gemfile
gem "rails", "3.0.0.beta2"

# application_helper.rb
def admin_area(&block)
content = with_output_buffer(&block)
content_tag(:div, content, :class => "admin")
end
# or
def admin_area(&block)
content_tag(:div, :class => "admin", &block) if admin?
end
[/ruby]

[html]
<%= form_for @product do |f| %>
<% end %>

<%= div_for @product do %>
<% end %>

<% @comments.each do |c| %>
<% end %>

<% content_for :side do %>
<% end %>

<% cache do %>
<% end %>

<!– products/show.html.erb –>
<%= admin_area do %>
<%= link_to "Edit", edit_product_path(@product) %> |
<%= link_to "Destroy", @product, :confirm => "Are you sure?", :method => :delete %> |
<%= link_to "View All", products_path %>
<% end %>
[/html]

Rails 3.0 Beta 2 veröffentlicht

David hat gestern die zweite Beta für Rails 3.0 bekanntgegeben. Das Release hat zwar länger gedauert als ursprünglich geplant, aber es soll der letzte Stop vor dem endgültigen Release sein.

Welche Änderungen und Bugfixes in dieses Release eingeflossen sind, kann den jeweiligen Changelogs entnommen werden:

Da nach dieser Beta-Version bereits das endgültige Release erscheinen soll, wird um Mithilfe gebeten. Bestehende und zukünftige Applikationen sollten mit diesem Release verprobt und ggf. Probleme an das Entwicklungsteam gemeldet werden.

Das Update oder Neuinstallation von Rails 3 kann wie gewohnt über gems durchgeführt werden:

[bash]
gem install rails –prerelease
[/bash]

Auch das Plugin von Jeremy McAnally’s (rails_upgrade plugin) kann für ein Update genutzt werden.