Screencaster Mostrando conhecimento


Ruby on Rails #6 - Upload de arquivos e redimensionamento de imagens

Bom dia, boa tarde, boa noite :D

Vamos seguindo nossa série de tutoriais sobre ruby on rails. Hoje vou mostrar como fazer para enviar arquivos associados ao model no Rails, e também como redimensionar fotos com ruby on rails, tópicos bastante interessantes, e resolvidos de forma muito simples, graças ao plugin paperclip.

icon for podpress  Podcast Video: Download (910)

Segue o comando que você deve rodar para instalar o paperclip na sua aplicação Rails:

ruby script/plugin install git://github.com/thoughtbot/paperclip.git

Seguem alguns links de apoio para este episódio:

- Instalando rMagick no Mac OS X Leopard
- Instalando rMagick no Windows
- Instalando rMagick no Linux

E, caso vocês ainda não tenham baixado a aplicação, entrem no repositório do github e façam isso. Caso não saiba como fazer, assista o episódio número 5.


25 pessoas comentaram

  1. Thiago Retondar says:

    Excelente dica.

    Parabéns pelo um ano do Screencaster. ;D

    Poderia fazer com que o “cliente”, na hora de fazer o Upload, escolher se desejasse miniatura ou médio?

    Abraços.

  2. inside says:

    Acredito que sim Thiago, é difícil algo que não seja possível com Rails =]
    Dê uma olhada na documentação do paperclip sobre isso

  3. Thiago Retondar says:

    Só mais uma dúvida, Guilherme. =D

    Demora muito o próximo screeencat? hehehehehe Fiquei fissurado por Ruby On Rails.

    Abraços.

  4. inside says:

    Espero que não, vou tentar continuar o mais breve possível ;)

  5. Thiago Retondar says:

    Sei que essa minha dúvida não tem muito haver com o assunto, mas o Ruby On Rails é seguro?

    NUnca programei mas me disseram que tem como deixar o PHP mais seguro. E com o Ruby (On Rails)? A única linguagem que estou aprendendo é ActionScript e ainda estou no começo.

    Creio eu que Ruby (On Rails) seja seguro por ser Orientado a Obejeto.

  6. to acompanhando essas aulas faz poco tempo… mas to mto satisfeito ja…. continua assim inside.. ta mandando bem cara….
    sempre q der eu dou umaa passada aki abraço!

  7. inside says:

    Thiago, o Rails cuida da parte de segurança quase toda para você. Tem alguns cuidados que precisam ser tomados, que pretendo tratar num screencast futuro.

    Que bom que está gostando Filipe

  8. Agnaldo says:

    Muito bom.
    Ainda uso Ruindows ,estou ficando apaixonado por Mac.
    Que soft vc usa pra gravar as aulas ?

  9. inside says:

    Screenflow

  10. Eduardo says:

    Primeiramente, parabéns… ficando legal!!

    Começei a assistir ontem e já estou esperando o sétimo video!! :)

    Bom… só está acontecendo uma coisa, fiz tudo como você fez, quando atualizo um item que não tinha foto, é criado lá dentro de uploads/foto/[numero_do_item]/[arquivo], tudo certinho. Porém, na view show, não apresenta a foto, mesmo eu colocando aquele parâmetro (:miniatura).

    O caminho que uma foto encontra-se por exemplo quando vejo pelo browser é:
    http://localhost:3000/uploads/fotos/4/tn_apple_macbook_13-inch_white_miniatura.jpg?1238733526

    Estou fazendo algo errado?

    Abraço e mais uma vez, meus parabéns!!!

  11. Fernando says:

    Ótimo video tutorial
    Não imaginava que o Paperclip fosse tão fácil de usar

  12. sdik says:

    Kra muito show, agora consigo entender esse ruby on rails, a muito tempo vinha lendo até procurando videos mas nada foi desse nivél, continue assim.

    Estou esperando pelos proxímos.

  13. Rafael says:

    Ótimo tutorial, estou esperando os próximos.
    Não entendo quase nada de RoR, mas gostaria de saber se é muito dificil para fazer um upload de imagens, mas ao invés de enviar somente uma foto para um produtos eu pudesse enviar a quantia que eu escolhesse, igual no gallery.

  14. inside says:

    Rafael, neste caso você criaria um model chamado foto, colocaria nele belongs_to :produto, e em produto has_many :fotos, e colocaria o paperclip no model foto. Bem resumidamente é isso ;)

    []’s

  15. Antonio says:

    Otimo screen!
    Só queria uma dica…
    talvez aconteça do usuario subir uma imagem com nome parecido, entao queria que o nome da imagem fosse um random de numeros (Ex.: 79842168456121.jpg)…tem como??

  16. Antonio says:

    Blz!
    Consegui!

    /images/profiles/:style/:style_#{Array.new(20){(rand(9))}.join}.:extension

    Retornou algo do tipo: medium_45122234545241131158.jpg

  17. Paulo says:

    tentei o q o antonio disse mais o arquivo fica com o nome certinho e no banco de dados nao??
    ex: na pasta eu encontro uma imagem 93419381293.jpg mais no banco esta imagemteste.jpg

    como resolver isso?

  18. Andre says:

    Estou acompanhando todos os Videos e não estou conseguindo fazer a gravação da imagem, me retorna a seguinte mensagem:

    2 errors prohibited this produto from being saved
    There were problems with the following fields:

    Foto C:/DOCUME~1/ANDRE~1.CAR/CONFIG~1/Temp/stream.5516.0 is not recognized by the ‘identify’ command.
    Foto C:/DOCUME~1/ANDRE~1.CAR/CONFIG~1/Temp/stream.5516.0 is not recognized by the ‘identify’ command.

    Porque esta dando esta mensagem de erro?

    Desde já agradeço o seu apoio.

    Obrigado.

  19. inside says:

    André, isto me parece algum problema com a sua instalação do image magick. Não saberia explicar exatamente qual o problema, pesquise por este erro no Google e veja o que descobre.

  20. Renan says:

    Fala alguem,

    O que eu preciso para rodar o script “ruby script/plugin install git://github.com/thoughtbot/paperclip.git”

    Tento que ter o git instalado. Tentei instalar lendo um tuto do blog do akita, mais eu acho que ele estava ensinando a configurar um servidor proprio.

    Por favor me ajudem, to querendo chegar logo ao screen cast 11 e este esta comlicado demais.

    Vlw galera.

    O inside, da uma forca ai, pode ser explicacao de instalacao para windows ou linux.

    Vlw nvmt.

  21. quyk says:

    Quando coloco a tag

    { :multipart => true }) do |f| %>

    na hora de cadastrar o produto a pagina fica em branco, alguem sabe me dizer o pq?

  22. Danilo says:

    Ei Andre, instala isso aqui que resolve teu problema:
    http://www.imagemagick.org/download/binaries/ImageMagick-6.5.4-2-Q16-windows-dll.exe

    E pra quem usa linux:
    sudo apt-get install imagemagick

  23. Norba says:

    Olá, queria saber como seria, se eu quisesse fazer upload por exemplo de um arquivo pdf, e depois mostrar um link na view show para este pdf e abrí-lo em outra janela ! Por favor se puder me ajudar, estou desenvolvendo um aplicativo de Leis para a Prefeitura da minha cidade, e só está me faltando isso pra terminar !

    Agradeço desde já =D

    • inside says:

      Olá Norba. Para fazer upload de outros tipos de arquivo apenas ignore a parte dos tamanhos da imagem (styles), o resto a princípio continua igual. No entanto, recomendo que dê uma verificada na documentação do paperclip para ver o que você deve fazer para tratar o upload corretamente.

  24. Norba says:

    Deu certo o upload dos arquivos em pdf, valew cara !

    Continue assim, ajudando a todos !

Agora é a sua vez: