Letzter Release Candidate für Rails 3.1 (3.1.0rc8)

Soeben wurde ein weiterer Release Candidate für Rails 3.1 veröffentlicht. Wenn keine Probleme auftreten, wird morgen 30. August die finale Version veröffentlicht.

Die Liste der Veränderung zum vorherigen Release sind wie immer im Changelog vermerkt: https://github.com/rails/rails/compare/v3.1.0.rc6…v3.1.0.rc8

Screencast: Prozess-Abhängigkeiten mit Foreman sicherstellen

Webapplikationen werden mit der Zeit komplexer und manchmal sind Abhängigkeiten nicht vermeidbar. Um Abhängigkeiten zu anderen Prozessen zu prüfen und bei Bedarf zu starten kann Foreman benutzt werden. Wie es eingesetzt werden kann, zeigt der Screencast dieser Woche.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
gem install foreman
mate Procfile
foreman check
foreman start
foreman start faye
foreman start -c worker=4
foreman export upstart .
[/bash]

Procfile

[bash]
beanstalk: beanstalkd
worker: ./script/worker
faye: rackup faye.ru -s thin -E production
[/bash]

Screencast: Pry in Rails verwenden

Pry ist eine Alternative zu IRB und bringt einige interessante Features und Funktionen mit. Ryan zeigt diese Woche wie es in Kombination mit Rails eingesetzt werden kann.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
gem install pry pry-doc
rvm gemset use global
pry
pry -r ./config/environment
[/bash]

pry

[bash]
help
cd Article
cd first
cd name
nesting
exit
ls
ls -h
ls -m
ls -M
ls Array -M
show-doc Article#in_groups_of
show-doc all
show-doc all.in_groups_of
show-method all.in_groups_of
edit-method all.in_groups_of
.ls
.cat Gemfile
[/bash]

Gemfile

[ruby]
gem ‚pry‘, :group => :development
[/ruby]

models/article.rb

[ruby]
binding.pry
[/ruby]

Release Candidate Rails 3.1.0.rc6

Heute wurde ein weiterer Release-Kandidat für Rails 3.1 veröffentlicht. Wie Rails 3.0.10 und 2.3.14 enthält diese Version Fixes für ein paar Sicherheitslücken die entdeckt wurden.

Die Anpassung sind wie gewohnt in den Changelogs verfügbar:

Changelog Rails 3.1.0: https://github.com/rails/rails/compare/v3.1.0.rc5…v3.1.0.rc6

Security Update für Rails 3.0.10 und 2.3.14

Heute sind neue Version für Rails 3 und 2 erschienen. Die neue Version behebt ein paar Sicherheitslücken und Nutzer sollten wenn möglich auf Ihre Applikationen aktualisieren.

Die Liste der Fixes sind in den jeweiligen Changelogs aufgelistet:

Rails 3.0.10: https://github.com/rails/rails/compare/v3.0.9…v3.0.10

Rails 2.3.14: https://github.com/rails/rails/compare/v2.1.12…v2.1.14

 

 

 

 

 

 

 

 

Screencast: Asset Pipeline Grundlagen

Einer der großen Neuerungen in Rails 3.1 ist die Asset Pipeline. Die Asset Pipeline unterstützt bei der Entwicklung von CSS und JavaScripts, indem Tasks wie Minify, Coffeescript-Kompilierung, etc. ein integraler Teil des Frameworks geworden ist. Wie es benutzt wird und welche Vorteile es bietet zeigt Ryan in dieser Woche in seinem Screencast.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
bundle open jquery-rails
rails s -e production
rake assets:precompile
[/bash]

app/assets/anything/greeting.txt.erb

[html]
Hello world <%= 1 + 1 %>!
[/html]

app/assets/javascripts/application.js

[javascript]
//= require jquery
//= require jquery_ujs
//= require jquery-ui
//= require_tree ./public
// or
//= require_directory .
[/javascript]

app/assets/javascripts/admin/categories.js.coffee

[javascript]
alert("hello!")
[/javascript]

Screencast: Suchen mit Sunspot

Sunspot ist ein Gem mit dem Solr, eine auf Java basierende, schnelle und mächtige Such-Platform, aus Ruby-Applikationen heraus benutzt werden kann. Der Screencast dieser Woche zeigt wie es installiert wird und verschiedene Suchoperationen durchgeführt werden können.

 

Downloads in verschiedenen Formaten:

source code
mp4
m4v
webm
ogv

 

Resourcen:

bash

[bash]
bundle
rails g sunspot_rails:install
rake sunspot:solr:start
rake sunspot:reindex
[/bash]

Gemfile

[ruby]
gem ’sunspot_rails‘
[/ruby]

models/article.rb

[ruby]
searchable do
text :name, :boost => 5
text :content, :publish_month
text :comments do
comments.map(&:content)
end
time :published_at
string :publish_month
end

def publish_month
published_at.strftime("%B %Y")
end
[/ruby]

articles_controller.rb

[ruby]
def index
@search = Article.search do
fulltext params[:search]
with(:published_at).less_than(Time.zone.now)
facet(:publish_month)
with(:publish_month, params[:month]) if params[:month].present?
end
@articles = @search.results
end
[/ruby]

articles/index.html.erb

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

<div id="facets">
<h3>Published</h3>
<ul>
<% for row in @search.facet(:publish_month).rows %>
<li>
<% if params[:month].blank? %>
<%= link_to row.value, :month => row.value %> (<%= row.count %>)
<% else %>
<strong><%= row.value %></strong> (<%= link_to "remove", :month => nil %>)
<% end %>
</li>
<% end %>
</ul>
</div>
[/html]

Screencast: Mountbare Engines

Engines kommen in Rails 3.1 wieder „zurück“ bzw. sie wurden überarbeitet und bieten nun mehr Möglichkeiten als noch in Rails 2.

Downloads in verschiedenen Formaten:

source code

mp4

m4v

webm

ogv

Resourcen:

bash

[bash]
rails -v
rails plugin new uhoh –mountable
rails g controller failures index
rails g model failure message:text
rake db:migrate
rake uhoh:install:migrations
cd test/dummy
rails g controller simulate failure
[/bash]

uhoh/failures_controller.rb

[ruby]
module Uhoh
class FailuresController < ApplicationController
def index
@failures = Failure.all
end
end
end
[/ruby]

uhoh/failures/index.html.erb

[html]
<h1>Failures</h1>
[/html]

config/routes.rb

[ruby]
root :to => "failures#index"
[/ruby]

config/initializers/exception_handler.rb

[ruby]
ActiveSupport::Notifications.subscribe "process_action.action_controller" do |name, start, finish, id, payload|
if payload[:exception]
name, message = *payload[:exception]
Uhoh::Failure.create!(:message => message)
end
end
[/ruby]

test/dummy/config/routes.rb

[ruby]
mount Uhoh::Engine => "/uhoh", :as => "uhoh_engine"
[/ruby]

test/dummy/app/controllers/simulate_controller.rb

[ruby]
def failure
# redirect_to uhoh_engine.root_url
raise "Simulating an exception"
end
[/ruby]