Intype

13/01/07

Estou tendo que trabalhar no Windows devido a um freela. Aí, fui dar uma fuçada em um projeto que estou desenvolvendo em Rails, e pensei em testar os editores voltados para RoR. Se você usa Windows, faça um favor a você mesmo. Instale agora o editor Intype, lançado recentemente na versão Alpha 0.2.

Impressiona pela leveza, é baseado no Textmate. Se eu usasse Windows seria eleito meu editor padrão. Por que é tão difícil ter editores como este para o Linux? :(

Vale lembrar que por estar ainda no início do desenvolvimento, não tem funções básicas como "undo/redo", além de muitas outras. Por isso, não se estresse!

Update: Saiu uma nova versão do Intype com algumas funcionalidades implementadas. Undo/Redo é uma delas, então o editor já é usável! ;)

Definindo o fuso horário no Rails

26/12/06

Se você hospeda seu projeto em um servidor que não está alocado no Brasil, pode ter problemas com o fuso horário. Uma solução é fazer esta definição manualmente, tanto para o Rails, quanto para o MySQL.

No arquivo "environment.rb", adicione a seguinte linha:

ENV['TZ'] = 'America/Sao_Paulo'

No arquivo "application.rb", presente no diretório "app/controllers", adicione:

before_filter :set_timezone
 
def set_timezone
    ActiveRecord::Base.connection.execute "SET GLOBAL time_zone='-3:00'"
end

Uma outra solução possível, caso você seja o dono do servidor, é definir isso no arquivo "my.cfn". O grande problema é que isso não pode ser feito por usuários em planos compartilhados (isso é o que me foi dito pelo suporte da RailsPlayground). Veja mais informações sobre isto nos links abaixo.

Exibindo mensagens no Rails

08/12/06

Sempre tive o costume de diferenciar as mensagens que exibo ao usuário em 4 tipos: info, notice, warning e error. Dessa forma, consigo exibir cada mensagem com formato visual diferente.

Exibindo mensagens para o usuário

No Rails é muito simples fazer isso. Basta colocar o método abaixo no arquivo "application_helper.rb".

module ApplicationHelper
  def flash_message
    messages = ""
    [:notice, :info, :warning, :error].each {|type|
      if flash[type]
        messages += "<p class=\"#{type}\">#{flash[type]}</p>"
      end
    }
    
    messages
  end
end

No seu controller, você define as mensagens utilizando o flash.

flash[:notice] = "Informações salvas com sucesso."
flash[:warning] = "Preencha todos os campos obrigatórios."
flash[:error] = "Não foi possível salvar as informações."
flash[:info] = "Você tem mensagens não visualizadas."

Na sua view basta você chamar o método da seguinte maneira:

<%= flash_message %>

Uma outra vantagem de utilizar este método é que caso nenhuma mensagem tenha sido definida, ele não exibe um elemento vazio na página.