Screencast: Das Rails API Gem

Applikationen die eine reine API zur Verfügung erstellen kommen immer häufiger vor und haben einen anderen Anspruch als konventionelle Web-Applikationen. Sie benötigen in der Regel keine/andere Views um Daten zur Verfügung zu stellen. In Rails kann für Applikationen die hauptsächlich APIs anbieten das Rails API Gem eingesetzt werden. Ryan zeigt in dieser Woche wie es verwendet werden kann.

 

Downloads in verschiedenen Formaten:

mp4
m4v
webm
ogg

 

Resourcen:

terminal

gem install rails-api
rbenv rehash
rails-api new todo
rails g scaffold task name
rake middleware
diff api_middleware.txt full_middleware.txt

tasks_controller.rb

include ActionController::MimeResponds
include ActionController::Helpers
include ActionController::Cookies
include ActionController::ImplicitRender

# GET /tasks
# GET /tasks.json
def index
  @tasks = Task.all

  # respond_to do |format|
  #   format.json { render }
  #   format.xml { render xml: @tasks }
  # end
end

views/tasks/index.json.rabl

collection @tasks 
attributes :id, :name

config/application.rb

config.middleware.insert_after ActiveRecord::QueryCache, ActionDispatch::Cookies

Screencast: Rails 3 mit Rack

Rack ist die neue Middleware, die in Version 3 einzug in Rails gefunden hat. Mit der Hilfe Rack können Rails-Applikationen neben z.B. Filter, Caches auch um andere Web-Applikationen erweitert bzw. ergänzt werden. Ryan zeigt diese Woche wie Sinatra für Redirects etc. eingesetzt werden kann.

 

Download:

Download(12.1 MB, 8:48)
Alternativer Download für iPod & Apple TV(12 MB, 8:48)

 

Resourcen:

 

Quellcode:

# routes.rb
root :to => "home#index"
root :to => HomeController.action(:index)
root :to => HomeApp

match "/about" => redirect("/aboutus")
match "/aboutus" => "info#about"

resources :products
match "/p/:id" => redirect("/products/%{id}")

match "/processes" => ProcessesApp.action(:index)

# Gemfile
gem "sinatra"

# lib/home_app.rb
class HomeApp < Sinatra::Base
  get "/" do
    "Hello from Sinatra!"
  end
end

# lib/processes_app.rb
class ProcessesApp < ActionController::Metal
  include ActionController::Rendering
  
  append_view_path "#{Rails.root}/app/views"
  
  def index
    @processes = `ps -axcr -o "pid,pcpu,pmem,time,comm"`
    render
  end
end
<!-- app/views/processes_app/index.html.erb -->
<h1>Processes</h1>
<pre><%= @processes %></pre>

Rails 2.3: Templates, Engines, Rack, Metal und mehr

Rails 2.3 ist erschienen!
Diese Version enthät einige Erneuerungen, die das Framework ein weiteres mal verbessert und die Entwicklung erleichtert.

Hier eine kurze Übersicht über die Neuerungen:

  • Templates: Erlauben das Erstellen von Rails-Applikationen nach einem selbstentwickletetn Schema, gewünschten gems und mehr.
  • Engines: Nachdem dieses Feature eine Zeit lang stiefmütterlich behandlet wurde, hat es nun in Rails 2.3 wieder eine Aktualisierung erfahren. Vereinfacht sind Engines eigenständige Rails-Applikationen, die in bestehende Rails-Applikationen integriert werden können, samt Routing, Models, etc.
  • Rack: Die neue Middleware, die zwischen der Rails-Applikation und dem Webserver sitzt.
  • Metal: Für schnelle Applikationsteile, die nicht den Rails-Stack oder das Railsrouting durchlaufen müssen.
  • Nested forms: Eingebettete Forms sind nun leichter umzusetzen.

Dies ist eine nur sehr grobe Übersicht über die Erneuerungen und Verbesserungen in diesem Release.

Weitere Deatils dindet ihr unter http://guides.rubyonrails.org/2_3_release_notes.html

Das Update könnt ihr mit folgendem Befehl installieren.

gem install rails

Diejenigen die Passenger als Zielplatform benutzen, sollten auch diese auf den aktuellsten Stand bringen. Da ältere Versionen von Passenger nicht mit Rails 2.3 zusammen arbeiten.

Wir wünschen euch viel Spaß mit dem neuen Release.