Elber Ribeiro

Nokogiri

30/06/2010

Não sei se todo mundo já precisou disso mas provavelmente possa precisar. Surgiu um novo projeto para a nossa equipe no trabalho onde temos que criar um robô para ficar “lendo” um site de tempos em tempos…

Rails Iphone e Ipad

29/06/2010

Hoje fui agraciado com a presença de um Ipad em casa e claro a primeira coisa que fiz foi testar minhas aplicações nele.

Logo percebi que não estava tudo certo, a aplicação responde como se fosse um Iphone.

Vamos ao caso:

Primeiro vamos criar uma aplicação rails normal para testar esse reconhecimento.

rails new iphone_ipad

Agora criamos nossa home:

rails g controller home
rm public/index.html

No arquivo config/routes.rb colocamos nosso controller home como root da aplicação:

root :to => "home#index"

E alterar a linha para reconhecer controller e action com format

match ':controller(/:action(.:format))'

Repare que agora no rails 3 podemos indicar o controller e a action de forma bem mais simples. Declarando nossa action index no arquivo app/controllers/home_controller.rb

class HomeController < ApplicationController
  def index
  end
end

E a view em app/views/home/index.html.erb com o código:

<h1>Titulo Home</h1>

Tudo muito simples e fácil, agora temos que adicionar o reconhecimento de dispositivos móveis, no nosso caso iphone e ipad e para isso temos que olhar a propriedade do agente da requisição http.

Para isso funcionar vamos primeiro criar os mime types em config/initializers/mime_types.rb

Mime::Type.register_alias "text/html", :iphone
Mime::Type.register_alias "text/html", :ipad

E no controller adicionar os novos tipos de resposta:

class HomeController < ApplicationController

  respond_to :html, :iphone, :ipad

  def index
  end
end

Agora precisamos criar a função para reconhecer os formatos em app/controllers/application_controller.rb

class ApplicationController < ActionController::Base
  protect_from_forgery
  layout 'application'

  before_filter :set_iphone_or_ipad_format

  def set_iphone_or_ipad_format
    format = is_iphone_or_ipad_request?
    unless format.nil?
      request.format = format
    end
  end

  def is_iphone_or_ipad_request?
    request.user_agent =

Restart

16/02/2010

Mais uma vez recomeçando este blog, agora com mais ruby. Estava procurando por um CMS escrito em rails para deixar de lado o wordpress e encontrei o toto