Screencast: ActionMailer in Rails 3

Auch ActionMailer wurde in Rails 3 neu geschrieben und bietet nun eine einfache Möglicheit es zu benutzen. In der neuen Version baut ActionMail auf dem gem Mail auf. Ryan zeigt diese Woche wie es benutzt werden kann.

 

Download:

Download (27.5 MB, 12:20)
Alternative Download für iPod & Apple TV (16.3 MB, 12:20)

 

Resourcen:

 

Quellcode:

[bash]
rails mailit
cd mailit
rails g scaffold user name:string email:string
rake db:migrate
rails g mailer user_mailer
bundle install
[/bash]

[ruby]
# config/initializers/setup_mail.rb
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "railscasts.com",
:user_name => "railscasts",
:password => "secret",
:authentication => "plain",
:enable_starttls_auto => true
}

ActionMailer::Base.default_url_options[:host] = "localhost:3000"
Mail.register_interceptor(DevelopmentMailInterceptor) if Rails.env.development?

# app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default :from => "ryan@railscasts.com"

def registration_confirmation(user)
@user = user
attachments["rails.png"] = File.read("#{Rails.root}/public/images/rails.png")
mail(:to => "#{user.name} <#{user.email}>", :subject => "Registered")
end
end

# users_controller.rb
UserMailer.registration_confirmation(@user).deliver

# Gemfile
gem "mail", "2.1.3"

# lib/development_mail_interceptor.rb
class DevelopmentMailInterceptor
def self.delivering_email(message)
message.subject = "#{message.to} #{message.subject}"
message.to = "ryan@railscasts.com"
end
end
[/ruby]

[html]
<!– views/user_mailer/registration_confirmation.text.erb –>
<%= @user.name %>,

Thank you for registering!

Edit profile: <%= edit_user_url(@user) %>

<!– views/user_mailer/registration_confirmation.html.erb –>
<p><%= @user.name %>,</p>

<p>Thank you for registering!</p>

<p><%= link_to "Edit profile", edit_user_url(@user) %></p>
[/html]

Die langsamsten Actions finden

Railsapplikationen sollen nicht gut aussehen sondern auch schnell arbeiten. Heute zeigen wir euch ein kleines Shellscript mit dem ihr eure Actions nach ihrer Ausführungsgeschwindigkeit sortieren könnt.

Dazu navigiert in das Hauptverzeichnis eurer Applikation und führt folgendes Kommando aus.
Windows-Benutzer können das Kommando in einer Cygwin-Umgebung ausführen.

[bash]
cat log/development.log | awk ‚/Completed/ { print "[" $3 "] – " $0 }‘ | sort -nr
[/bash]

Wenn ihr die Werte aus eurer produktiven Umgebung interessieren, braucht ihr nur das benutze log-File auszutauschen. Also „log/production.log“ anstatt von „log/development.log“.

Viel Spaß beim auswerten.