3 Rails Quick Tips

Posted on July 17, 2009

0


Tip 1: Visualizar LOGS da aplicação direto no browser

Em primeiro lugar, abra o config/environments/production.rb e altere o config.level para warning.


config.log_level = :warn

Crie um controller para a página de logs
script/generate controller logs index

No controller vamos adicionar actions para buscar o conteúdo, limpar o log e fazer backup. Você pode adicionar um filtro de autorização para controlar o acesso aos logs.

class LogsController adicione alguma autenticação
LOG_PATH = "#{Rails.root}/log/#{Rails.env}.log"

def index
@log_content = File.read(LOG_PATH)
@log_size = File.size?(LOG_PATH).to_f/1048576 #converts file size to MB
end

def backup
send_file LOG_PATH,
:type => "text/plain",
:stream => false,
:filename => "log_backup_#{Date.today}"
end

def clear
File.open(LOG_PATH, "w") do |log_file|
log_file.write "Log file cleared at #{Time.now}\n"
end
flash[:notice] = "log was cleared\n"
redirect_to log_path
end
end

Precisamos criar uma rota para a página de log. Altere o arquivo /config/routes.rb

map.with_options :controller => "logs" do |logs|
logs.log "log", :action => "index"
logs.clear_log "clear_log", :action => "clear"
logs.backup_log "backup_log", :action => "backup"
end

Por último, crie a página que mostra os logs no browser. A página fica em views/logs/index.html.erb:

<p>Log size: <%= “%0.3f” % @log_size %>MB</p>
<p>
<%= link_to “clear log”, clear_log_path, :confirm => “Are you sure you want to clear the log?” %> |
<%= link_to “backup log”, backup_log_path %>
</p>
<pre>
<%= @log_content %>
</pre>

Tip 2: Fazendo mensagens flash do Rails sumirem após certo intervalo
Para testar, crie um controller que sete uma flash[:notice]

class FlashController < ApplicationController
def index

flash[:notice] = “Coloque aqui a mensagem”

end

end

Na view, importe os javascripts

<%= javascript_include_tag :all %>

e use os efeitos do scriptaculos:

<%- flash.each do |flash_type, message| -%>
<%= content_tag :div, message, :class => "flash", :id => flash_type %>
<% content_tag :script, :type => "text/javascript" do %>
setTimeout("new Effect.Fade('<%= flash_type %>');", 1000);
<% end %>
<%- end -%>

Tip 3: Usando o RDoc

Essa é amais simples, mas alguns podem não conhecer.
Para gerar uma documentação do seu software semelhante a do Ruby, coloque os comentários como abaixo:


# User records should require:
# * first_name
# * last_name
# * email
# all other attributes are optional
class User < ActiveRecord::Base

# returns the first_name and last_name attributes separated by a space
def name
"#{first_name} #{last_name}"
end

end

Para gerar, no terminal rode rake doc:app
Sua app rails terá a documentação em HTML no diretório /docs

Posted in: rails