Screencast: Markdown mit Redcarpet

Markdown ist eine vereinfachte Möglichkeit beliebige Texte in HTML umzuwandeln. Dabei wird eine Syntax benutzt die es erlaubt verschiedene HTML Elemente durch Verwendung von Schlüsselwörter und Einrückungen zu erzeugen. Ryan zeigt diese Woche wie Redcarpet dafür eingesetzt werden kann und zusätzlich wie Syntaxhighlighting für Quellcode-Texte eingebunden wird.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
sudo easy_install pygments
[/bash]

Gemfile

[ruby]
gem ‚redcarpet‘
gem ‚albino‘
gem ’nokogiri‘
[/ruby]

application_helper.rb

[ruby]
def markdown(text)
options = [:hard_wrap, :filter_html, :autolink, :no_intraemphasis, :fenced_code, :gh_blockcode]
syntax_highlighter(Redcarpet.new(text, *options).to_html).html_safe
end

def syntax_highlighter(html)
doc = Nokogiri::HTML(html)
doc.search("//pre[@lang]").each do |pre|
pre.replace Albino.colorize(pre.text.rstrip, pre[:lang])
end
doc.to_s
end
[/ruby]

articles/show.html.erb

[html]
<%= markdown(@article.content) %>
[/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]

 

 

Screencast: Resque

Resque ist ein Redis-Backend Bibliothek in Ruby um Hintergrundprozesse zu erstellen, diese Prozesse in mehrere Queues zu stellen und später zu verarbeiten. Ryan zeigt in seinem dieswöchigen Screencast wie es in Rails genutzt werden kann

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
brew install redis
redis-server /usr/local/etc/redis.conf
resque-web
rake resque:work QUEUE=’*‘
[/bash]

Gemfile

[ruby]
gem ‚resque‘, :require => "resque/server"
[/ruby]

lib/tasks/resque.rake

[ruby]
Resque::Server.use(Rack::Auth::Basic) do |user, password|
password == "secret"
end
[/ruby]

snippets_controller.rb

[ruby]
Resque.enqueue(SnippetHighlighter, @snippet.id)
[/ruby]

app/workers/snippet_highlighter.rb

[ruby]
class SnippetHighlighter
@queue = :snippets_queue
def self.perform(snippet_id)
snippet = Snippet.find(snippet_id)
uri = URI.parse(‚http://pygments.appspot.com/‘)
request = Net::HTTP.post_form(uri, {‚lang‘ => snippet.language, ‚code‘ => snippet.plain_code})
snippet.update_attribute(:highlighted_code, request.body)
end
end
[/ruby]

config/routes.rb

[ruby]
mount Resque::Server, :at => "/resque"
[/ruby]

config/initializers/resque_auth.rb

[ruby]
Resque::Server.use(Rack::Auth::Basic) do |user, password|
password == "secret"
end
[/ruby]

Professional Ruby on Rails Training

Ruby on Rails ist das vermutlich das meistkopierte Web-Framework der letzten Jahre. Basierend auf der dynamischen, objektorientierten Programmiersprache Ruby und deren Möglichkeiten zur Meta-Programmierung ist ein Framework entstanden, das für die Erstellung datenbankbasierter Web-Anwendungen an Produktivität kaum zu überbieten ist.
Der Einstieg in Rails ist relativ einfach, jedoch kann man mit einer entsprechenden Schulung das Wissen schneller und gezielter erreichen. Hinzu kommt, dass durch den Austausch mit Mitschülern und Rückfragen bei Dozenten die Einarbeitung um ein vielfaches erleichtert wird.

Am 12. und 13. September 2011 veranstaltet innoQ Deutschland GmbH ein „Professional Ruby on Rails“-Training in Ratingen (in der Nähe von Düsseldorf). Trainer sind die Rails-Experten Robert Glaser und Willem van Kerkhof, die auch Referenten auf der RailsWayCon 2011 waren.

Anmeldung unter http://www.innoq.com/de/presentations/professional-ruby-on-rails/training-professional-ruby-on-rails.

Rails 3.0.9 veröffentlicht

Rails 3.0.9 wurde heute veröffentlicht. Es behebt ein paar Bugs und enthält zudem noch das letzte Sicherheitsfix.

Das Update kann wie gewohnt über gem eingespielt werden:

[bash]
gem install rails
[/bash]

Ansonsten gibt es noch die Möglichkeit über bundler die eigene Railsversion auf den aktuellsten Stand zu bringen.

Gemfile anpassen…

[ruby]
gem ‚rails‘, ‚3.0.9‘
[/ruby]

… und bundler aufrufen

[bash]
bundle install
[/bash]

Screencast: Authentifizierung in Rails 3.1

Rails 3.1 steht kurz vor der Veröffentlichung und daher gibt es diese Woche einen weiteren Screencast dazu. Authentifizierung über HTTP Basic, sichere Passwörter in Datenbanken und SSL sind die Themen die Ryan in dieser Woche vorstellt und wie diese ganz einfach in Rails 3.1 realisiert werden können.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
rails g model user email:string password_digest:string
rails s -e production
[/bash]

secret_controller.rb

[ruby]
http_basic_authenticate_with :name => "frodo", :password => "thering"
[/ruby]

models/user.rb

[ruby]
class User < ActiveRecord::Base
attr_accessible :email, :password, :password_confirmation
has_secure_password
validates_presence_of :password, :on => :create
end
[/ruby]

sessions_controller.rb

[ruby]
def create
user = User.find_by_email(params[:email])
if user && user.authenticate(params[:password])
session[:user_id] = user.id
redirect_to root_url, :notice => "Logged in!"
else
flash.now.alert = "Invalid email or password"
render "new"
end
end

def destroy
session[:user_id] = nil
redirect_to root_url, :notice => "Logged out!"
end
[/ruby]

application_controller.rb

[ruby]
force_ssl

private

def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
helper_method :current_user
[/ruby]

Screencast: Vererbung von Templates

Teile von Templates wieder zu verwenden wurde bisher größtenteils über partials verwirklicht. In Rails 3.1 wird es möglich sein Templates zu vererben. So können Teile von Views auf allgemein gültige zurückgreifen und darstellen. Ryan zeigt diese Woche wie in einer Applikation ein Template von allen Views genutzt und wie es im Zusamenhang mit Subdomains eingesetzt werden kann.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

application_controller.rb

[ruby]
before_filter :subdomain_view_path

private

def subdomain_view_path
prepend_view_path "app/views/#{request.subdomain}_subdomain" if request.subdomain.present?
end
[/ruby]

views/layouts/application.html.erb

[html]
<%= render "side" %>
[/html]

views/application/_side.html.erb

[html]
<strong>Pages</strong>
<ul>
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Products", products_path %></li>
</ul>
[/html]

views/admin/base/_side.html.erb

[html]
<strong>Pages</strong>
<ul>
<li><%= link_to "Home", root_path %></li>
<li><%= link_to "Products", products_path %></li>
<li><%= link_to "Manage Products", admin_products_path %></li>
<li><%= link_to "Manage Categories", admin_categories_path %></li>
</ul>
[/html]

views/mobile_subdomain/products/index.html.erb

[html]
<h1>Mobile Version</h1>
[/html]

edit.html.erb

[html]
<%= controller.view_paths %>
[/html]