3 Rails Quick Tips

17 July 2009

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
comments powered by Disqus