Screencast: Einstieg in die Rails-Entwicklung

Der Einstieg in die Entwicklung mit Ruby on Rails, vor allem für Neulinge, kann unter Umständen überfordernd sein. Um diese Hürde zu meistern zeigt Ryan in dieser Woche wie mit Rails begonnen werden kann, und wo es Informationen zu den verschiedensten Bereichen gibt.

 

Downloads in verschiedenen Formaten:

mp4
mp4
webm
ogg

 

1. Installation

bash

[bash]
brew install git sqlite
rvm install 1.9.3
rvm use 1.9.3 –global
ruby -v
gem install rails
rails -v
[/bash]

2. Tutorials

3. Divide and Conquer

text

[text]
Divide and Conquer
* Ruby
* HTML
* CSS (and SASS)
* JavaScript (and CoffeeScript)
* SQL
[/text]

bash

[bash]
irb
rails console
[/bash]

4. Your Own App

bash

[bash]
rails g model …
rails g controller …
[/bash]

5. Getting Help

Frohe Weihnachten!

Das rubyonrails.de-Team, dessen Familien und Freunde, wünschen allen Lesern frohes Fest und erholsame Tage.
Die letzten Geschenke besorgt…

…den Baum geschmückt, die abschließenden Vorbereitungen fast abgeschlossen und das Fest naht.
Auch wir wollen uns in die lange Reihe der Wünschenden stellen und allen unseren Lesern, Ihren Liebsten, deren Familien und Freunden ein frohes Fest wünschen.
Wir wünschen uns, dass die Festtage für alle erholsam sein werden und das Fest die Strapazen des Jahres vergessen machen.
Allen, die zwischen den Tagen sich ihren Familien, einem Urlaub oder etwas ohne Rechner widmen wollen und rubyonrails.de nicht besuchen, wünschen jetzt schon einen guten Rutsch ins Jahr 2012.
Mögen alle Wünsche, Träume und Vorhaben in Erfüllung gehen und das neue Jahr noch besser verlaufen als das Vergangene.
Wie auch letztes Jahr werden wir Sie/Euch auch diesmal zwischen den Festtagen und dem neuem Jahr mit interessanten Nachrichten aus dem Rails, Ruby und Webumfeld versorgen.
Gegebenenfalls, wenn es nicht genug Neuigkeiten gibt, mit etwas reduziertem Umfang… 🙂

Wir wünschen ein frohes und entspanntes Weihnachtsfest im Kreise der Liebsten!

Das rubyonrails.de-Team

Screencast: Arbeit an der Konsole mit ZSH

Als Rails-Entwickler arbeitet man häufig in einer Shell, einem Terminal bzw. Konsole. Ryan zeigt wie ein Wechsel zur Z-Shell, zusammen mit seinem entsprechend Theme, wechselt.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogg

 

Resourcen:

bash

[bash]
ps
wget –no-check-certificate https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O – | sh
curl -L https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh | sh
mate ~/.zshrc
cat ~/.bash_profile >> ~/.zshrc
mate ~/.oh-my-zsh
[/bash]

.zshrc

[bash]
# Path to your oh-my-zsh configuration.
ZSH=$HOME/.oh-my-zsh

# Set name of the theme to load.
# Look in ~/.oh-my-zsh/themes/
# Optionally, if you set this to "random", it’ll load a random theme each
# time that oh-my-zsh is loaded.
ZSH_THEME="rbates"

# Uncomment following line if you want to disable colors in ls
DISABLE_LS_COLORS="true"

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Example format: plugins=(rails git textmate ruby lighthouse)
plugins=(git bundler brew gem rbates)

source $ZSH/oh-my-zsh.sh

# Customize to your needs…

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
[/bash]

.oh-my-zsh/themes/rbates.zsh-theme

[bash]
PROMPT=’%3~$(git_prompt_info)%# ‚

ZSH_THEME_GIT_PROMPT_PREFIX="["
ZSH_THEME_GIT_PROMPT_SUFFIX="]"
[/bash]

.oh-my-zsh/custom/plugins/rbates/rbates.plugin.zsh

[bash]
c() { cd ~/code/$1; }
_c() { _files -W ~/code -/; }
compdef _c c
[/bash]

Screencast: ElasticSearch Teil 1

ElasticSearch ist eine auf Lucene basierende Suchmaschine. ElasticSearch bietet eine RESTfull Schnittstelle um Suchanfragen zu stellen. Ryan zeigt in diesem ersten Teil wie es in bestehende Applikationen integriert werden kann.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogg

 

Resourcen:

bash

[bash]
brew install elasticsearch
elasticsearch -f -D es.config=/usr/local/Cellar/elasticsearch/0.18.5/config/elasticsearch.yml
rake db:setup
[/bash]

Gemfile

[ruby]
gem ‚tire‘
[/ruby]

articles_controller.rb

[ruby]
def index
@articles = Article.search(params)
end
[/ruby]

models/article.rb

[ruby]
include Tire::Model::Search
include Tire::Model::Callbacks

def self.search(params)
tire.search(load: true) do
query { string params[:query], default_operator: "AND" } if params[:query].present?
filter :range, published_at: {lte: Time.zone.now}
end
end
[/ruby]

articles/index.html.erb

[html]
<%= form_tag articles_path, method: :get do %>
<p>
<%= text_field_tag :query, params[:query] %>
<%= submit_tag "Search", name: nil %>
</p>
<% end %>
[/html]

Screencast: OmniAuth

OmniAuth ist ein Ruby-Authetifierungs-Framework welches eine standardisierte Schnittstelle zu verschiedenen Authentifizierungs-Providern bietet (z.B. Facebook, OpenID). Mit dem aktuellen OmniAuth-Release 1.0 ist nun auch möglich klassisch über Benutzernamen und Passwort die Authentifizierung durchzuführen, wenn kein externer Anbieter gewünscht oder vorhanden ist. In diesem Screencast zeigt Ryan wie es installiert und verwendet werden kann.

 

Resourcen:

bash

[bash]
rails g model identity name:string email:string password_digest:string
rake db:migrate
rails g controller identities
[/bash]

Gemfile

[ruby]
gem ‚omniauth-identity‘
[/ruby]

config/initializers/omniauth.rb

[ruby]
Rails.application.config.middleware.use OmniAuth::Builder do
# …
provider :identity, on_failed_registration: lambda { |env|
IdentitiesController.action(:new).call(env)
}
end
[/ruby]

models/identity.rb

[ruby]
class Identity < OmniAuth::Identity::Models::ActiveRecord
validates_presence_of :name
validates_uniqueness_of :email
validates_format_of :email, :with => /^[-a-z0-9_+.]+@([-a-z0-9]+.)+[a-z0-9]{2,4}$/i
end
[/ruby]

sessions/new.html.erb

[html]
<p>
<strong>Don’t use these services?</strong>
<%= link_to "Create an account", new_identity_path %> or login below.
</p>

<%= form_tag "/auth/identity/callback" do %>
<div class="field">
<%= label_tag :auth_key, "Email" %><br>
<%= text_field_tag :auth_key %>
</div>
<div class="field">
<%= label_tag :password %><br>
<%= password_field_tag :password %>
</div>
<div class="actions"><%= submit_tag "Login" %></div>
<% end %>
[/html]

routes.rb

[ruby]
resources :identities
[/ruby]

identities_controller.rb

[ruby]
def new
@identity = env[‚omniauth.identity‘]
end
[/ruby]

identities/new.html.erb

[html]
<%= form_tag "/auth/identity/register" do %>
<% if @identity && @identity.errors.any? %>
<div class="error_messages">
<h2><%= pluralize(@identity.errors.count, "error") %> prohibited this account from being saved:</h2>
<ul>
<% @identity.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= label_tag :name %><br>
<%= text_field_tag :name, @identity.try(:name) %>
</div>
<div class="field">
<%= label_tag :email %><br>
<%= text_field_tag :email, @identity.try(:email) %>
</div>
<div class="field">
<%= label_tag :password %><br>
<%= password_field_tag :password %>
</div>
<div class="field">
<%= label_tag :password_confirmation %><br>
<%= password_field_tag :password_confirmation %>
</div>
<div class="actions"><%= submit_tag "Register" %></div>
<% end %>
[/html]