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]

Screencast: Internationalisierung im Backend

Internationalisierung ist für viele Applikationen unerlässlich und Rails bringt bereits einiges mit um es zu umzusetzen. Jedoch können YAML Dateien unübersichtlich werden, wenn der Umfang sehr groß ist. Ryan zeigt diese Woche wie Redis für die Verwaltung von Übersetzungen, über ein Webinterface, eingesetzt werden kann.

 

Download:

Download(18 MB, 11:11)
Alternativer Download für iPod & Apple TV(18.3 MB, 11:11)

 

Resourcen:

 

Quellcode:

[bash]
rails g controller translations index
brew install redis
[/bash]

[ruby]
# Gemfile
gem ‚redis‘

# config/initializers/i18n_backend.rb
TRANSLATION_STORE = Redis.new
I18n.backend = I18n::Backend::Chain.new(I18n::Backend::KeyValue.new(TRANSLATION_STORE), I18n.backend)

# translations_controller.rb
def index
@translations = TRANSLATION_STORE
end

def create
I18n.backend.store_translations(params[:locale], {params[:key] => params[:value]}, :escape => false)
redirect_to translations_url, :notice => "Added translation"
end
[/ruby]

[html]
<!– home/index.html.erb –>
<h1><%= t "welcome" %></h1>

<!– translations/index.html.erb –>
<h1>Translations</h1>

<ul>
<% @translations.keys.each do |key| %>
<li><%= key %>: <%= @translations[key] %></li>
<% end %>
</ul>

<h2>Add Translation</h2>

<%= form_tag translations_path do %>
<p>
<%= label_tag :locale %><br />
<%= text_field_tag :locale %>
</p>
<p>
<%= label_tag :key %><br />
<%= text_field_tag :key %>
</p>
<p>
<%= label_tag :value %><br />
<%= text_field_tag :value %>
</p>
<p><%= submit_tag "Submit" %></p>
<% end %>
[/html]

[text]
# config/locales/en.yml
en:
welcome: "Welcome"
[/text]