Powered By Blogger

quarta-feira, 29 de abril de 2009

undefined local variable or method `location_of_caller' for Time:Class

undefined local variable or method `location_of_caller' for Time:Class

Time.today ficou obsoleto e retiraram sua funcionalidade no
Rubygems 1.3.2

Um monte de plugins e outros projetos que usam a função today
retornarão esse erro, optei por voltar o rubygems na versão 1.3.1
embora parece que existam alguns fixes

Para remover o rubygems executei o seguinte
para descobrir os diretorios de bibliotecas ruby
ruby -e 'puts $:'

junto com as linhas retornou o diretorio "/usr/local/lib/site_ruby/1.8"
removi os arquivos desse dir

gauntlet_rubygems.rb
rubygems.rb
ubygems.rb

e o diretorio rubygems



veja o tópico original:
https://rubyforge.org/tracker/index.php?func=detail&aid=25564&group_id=126&atid=575

Maldito 1.3.2, tá certo que o Time.today ficou obsoleto, mas não
precisa retirar a função e retornar um erro para isso, retorna um
warning bem +simples e mantém a compatibilidade com projetos antigos, AF!


sexta-feira, 24 de abril de 2009

Removendo acentos HTML

fiz uma classe com uma funcao bem básica baseada na remover_acentos
do plugin brazilian rails, até mandei uma msg pra um dos criadores,
porque queria saber se já existia essa função no pacote e que a mesma
deveria estar até mesmo bem + completa que essa que eu fiz

resumindo:

criei uma classe "meuprojrails/lib/traducao.rb"
#traducao.rb
class Traducao
def remover_acentos_html(texto)
texto = texto.gsub(/(á|à|ã|â|ä)/, 'a').gsub(/(é|è|ê|ë)/, 'e').gsub(/(í|ì|î|ï)/, 'i').gsub(/(ó|ò|õ|ô|ö)/, 'o').gsub(/(ú|ù|û|ü)/, 'u').gsub(/(ç)/, 'c').gsub(/(ñ)/,'n')
texto = texto.gsub(/(Á|À|Ã|Â|Ä)/, 'A').gsub(/(É|È|Ê|Ë)/, 'E').gsub(/(Í|Ì|Î|Ï)/, 'I').gsub(/(Ó|Ò|Õ|Ô|Ö)/, 'O').gsub(/(Ú|Ù|Û|Ü)/, 'U').gsub(/(Ç)/, 'C').gsub(/(Ñ)/,'N')
texto
end
end


Ao chamar no rails eu uso o seguinte:
#meu controller
t=Traducao.new
str = t.
remover_acentos_html("Não!")

.............

terça-feira, 14 de abril de 2009

qual SO está sendo executado o script ruby?

Bem, tive + essa dúvida outro dia porque precisava ter 2versões do script, uma para windows e uma para linux. O principal problema era no path do arquivo
que ao invés de "/" tinha que ser "\"

eu usei a variável de plataforma do ruby

RUBY_PLATFORM, no linux ela me retornou::"i486-linux"

no windows retorna algo com "mswin" na string, essa bobeirinha me tomou 1hora pra descobrir o nome da const, affffffffff

quarta-feira, 1 de abril de 2009

Email com anexos

Mais uma vez a documentação me deixou na mão,
com sorte achei um tópico no railsforum.com que literalmente salvou
a construir emails com arquivos anexos, o que é para ser bem simples.

Eu recebo na aplicação alguns arquivos e são salvos usando Paperclip
e posso enviá-los por email.

http://railsforum.com/viewtopic.php?id=2868

fiz umas poucas alterações, e ficou assim no final

#no mailer

def
email_com_anexos(usuario)
subject 'assunto'
recipients 'foo@bar.com'
from 'eumesmo@a.com'
content_type "multipart/mixed"
# Message
part :content_type => "multipart/alternative" do |p|

p.part :content_type => "text/html",
:body => render_message("email_com_anexos.html",
:usuario => usuario)
#p.part :content_type => "text/plain",:body => text_view(myObject)
end

# Attachments
if usuario.arquivo_file_size and usuario.arquivo_file_size > 0
part :content_type => "multipart/mixed" do |p|
p.attachment :content_type => "application/octet-stream",
:body =>File.read(usuario.arquivo.path),
:filename => usuario.arquivo_file_name
end
end

end


#na view
#com o layout para os emails então a view fica bem pequena

nome <%= usuario.nome %>
email
<%= usuario.email %>
.
.
.
.