Posts Tagged ‘imagemagick’

Ruby on Rails configurando ambiente de desenvolvimento no Linux

Postado em 25 jun 2009
Categoria(s) Ruby on Rails

Nesse post vou mostrar como configurar um ambiente de desenvolvimento em Ruby on Rails no Linux.

Vamos lá!

Atualizando os pacotes do Linux:

sudo apt-get update

Instalando Ruby on Rails:

1
2
3
4
5
6
7
8
9
10
sudo apt-get install ruby irb rdoc ruby1.8-dev libopenssl-ruby imagemagick curl
wget http://rubyforge.org/frs/download.php/57643/rubygems-1.3.4.tgz
tar xzvf rubygems-1.3.4.tgz
cd rubygems-1.3.4
sudo ruby setup.rb
cd /usr/bin
sudo ln -s gem1.8 gem
sudo gem update --system
sudo apt-get install build-essential
sudo gem install rails passenger mongrel capistrano

Instalando Apache com PHP e Passenger/Modrails:

O Passenger/Modrails permite rodar aplicações Ruby on Rails no Apache.
Nessa etapa nós também iremos instalar o PHP, vamos precisar dele para o phpMyAdmin.

1
2
sudo apt-get install apache2 php5 libapache2-mod-php5 apache2-prefork-dev libapr1-dev
sudo passenger-install-apache2-module

Agora nós precisamos configurar o Apache para carregar o módulo do Passenger:

sudo gedit /etc/apache2/mods-enabled/passenger.load

Adicione as seguintes linhas no arquivo em branco:

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.4
PassengerRuby /usr/bin/ruby1.8
RailsEnv development

Salve o arquivo e feche o gedit.

Reinicie o Apache para carregar o Passenger:

sudo /etc/init.d/apache2 restart

Instalando o MySQL:

1
2
sudo apt-get install mysql-server libmysql-ruby php5-mysql
sudo apt-get install phpmyadmin

Configurando acesso a sua aplicação Ruby on Rails:

Digamos que você tenha o código da sua aplicação Ruby on Rails no diretório:

/home/patrick/projetos/minha_aplicacao

Vamos configurar para que quando você digitar no navegador http://minha_aplicacao você veja a sua aplicação em ambiente de desenvolvimento e possa interagir com ela.

Para isso, siga os passos abaixo:

cd /etc/apache2/sites-available/

Vamos criar um novo host novo virtual host no Apache:

sudo gedit minha_aplicacao

No arquivo em branco adicione:

<VirtualHost *:80>
ServerName minha_aplicacao
DocumentRoot /home/patrick/projetos/minha_aplicacao/public/
</VirtualHost>

Salve e feche o gedit.

Vamos deixar esse virtual host disponível:

1
2
cd /etc/apache2/sites-enabled/
sudo ln -s ../sites-available/minha_aplicacao 001-minha_aplicacao

Agora vamos configurar para que quando você digitar no navegador http://minha_aplicacao o sistema operacional procure localmente ao invés de buscar na internet:

sudo gedit /etc/hosts

Nesse arquivo adicione a linha:

127.0.0.1	minha_aplicacao

Logo abaixo da linha que começa com 127.0.1.1…
Salve e feche o gedit.

Reinicie o Apache para carregar esse novo virtual host:

sudo /etc/init.d/apache2 restart

Abra o navegador:

Digite no browser http://minha_aplicacao e veja ela rodando.

Se você quiser usar o Vim como IDE de desenvolvimento Ruby on Rails leia esse post: http://blog.patrickespake.com/2009/04/21/usando-o-vim-para-programar-em-ruby-on-rails/.

Pronto!

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Ruby on Rails como colocar um captcha no formulário, instalação e uso do plugin Simple Captcha

Postado em 01 fev 2009
Categoria(s) Ruby on Rails

Conheço um plugin chamado Simple Captcha, eu acho ele muito bom e satifaz todas as minhas necessidades.

Vou explicar como instalar e usar:

Instalação ImageMagick e RMagick::

Como o captcha trabalha com geração dinâmica de imagens e necessário instalar essas libs:

1
2
3
sudo apt-get install imagemagick
sudo apt-get install libmagick9-dev
sudo gem install rmagick

Instalação do plugin Simple Captcha:

No diretório do projeto digite o seguinte:

1
ruby script/plugin install svn://rubyforge.org/var/svn/expressica/plugins/simple_captcha

Configuração da aplicação:

No diretório do projeto digite:

1
rake simple_captcha:setup

O comando acima irá criar um arquivo de migração para armazenar os captchas gerados no banco de dados, também irá criar um partial para exibir o captcha na view.

Agora faça o migrate:

1
rake db:migrate

É necessário adicionar uma rota no arquivo config/routes.rb, essa rota será responsável por gerar as imagens:

1
map.simple_captcha '/simple_captcha/:action', :controller => 'simple_captcha'

Adicione a seguinte linha no arquivo app/controllers/application.rb:

1
2
3
ApplicationController < ActionController::Base
  include SimpleCaptcha::ControllerHelpers
end

Como usar:

No seu formulário na view adicione o seguinte:

1
<%= show_simple_captcha( : object=> "user" ) %>

Onde : object => “user” é o nome do seu model.
Obs.: Eu deixei separado o dois pontos, : object => “user” porque o wordpress troca por desenhos smiley, na hora de codificar deixa tudo junto.

No model adicione a seguinte linha:

1
2
3
class User < ActiveRecord::Base
  apply_simple_captcha
end

Agora no controller ao invés de usar:

1
@user.save

Use:

1
@user.save_with_captcha

O método @user.save funciona corretamente, mas não leva em consideração o novo campo captcha, por isso é necessário usar o método @user.save_with_captcha.

Outras opções de uso e configuração, para ver outras alternativas eu sugiro que leia: http://expressica.com/simple_captcha/.

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Como instalar a gem rmagick no Ubuntu

Postado em 01 fev 2009
Categoria(s) Ruby on Rails, Ubuntu

Para instalar a gem rmagick no Ubuntu faça o seguinte:

Instale o imagemagick:

1
sudo apt-get install imagemagick

Instale a lib dev do imagemagick:

1
sudo apt-get install libmagick9-dev

Finalmente instale a gem rmagick:

1
sudo gem install rmagick

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark

Instalando e usando o plugin paperClip no Ruby on Rails

Postado em 18 dez 2008
Categoria(s) Ruby on Rails

O plugin paperClip do Ruby on Rails é muito bacana, agiliza muito a vida, com ele é possível fazer upload de imagens e já gerar várias dimensões da imagem.

Vou explicar como instalar e como usar.

Instalação:

Faça o download do paperClip: http://github.com/tarballs/thoughtbot-paperclip-18c0246c11c51dafa77b6367ddaf730684d0e752.zip

Descompacte o arquivo e renomei o diretório extraído para paperclip.

Coloque esse diretório dentro de seu_projeto/vendor/plugins/paperclip.

Você vai precisar do imageMagick, através dele o paperClip faz o resize nas imagens. Para instalar no Ubuntu 8.04 faça:

1
sudo apt-get install imagemagick

Configuração:

Para o paperClip funcionar você vai precisar que exista 4 novas colunas na sua tabela são elas: image_file_name, image_content_type, image_file_size, image_updated_at.

Esse nome image_… pode ser qualquer outra coisa por exemplo: avatar_…, foto_…

Seguindo essa ideia você poderia ter um migrate mais ou menos assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class CreateTournaments < ActiveRecord::Migration
  def self.up
    create_table :tournaments do |t|
      t.column :name,               :string,    :limit => 100, :null => false
      t.column :description,        :text,      :null => true
      t.column :image_file_name,    :string
      t.column :image_content_type, :string
      t.column :image_file_size,    :integer
      t.column :image_updated_at,   :timestamp
      t.column :is_active,          :boolean,   :null => false, :default => false
      t.column :start_date,         :date,      :null => false
      t.column :end_date,           :date,      :null => false
      t.column :created_at,         :timestamp, :null => false
      t.column :updated_at,         :timestamp, :null => false
    end
  end
 
  def self.down
    drop_table :tournaments
  end
end

Agora é necessário informar o seu model que existirá anexos e que formatos são aceitos:

1
2
3
4
5
6
7
8
9
10
class Tournament < ActiveRecord::Base
  has_attached_file :image,
                    :styles => {:large => '600x600>', :medium => '300x300>', :small => '150x150>', :thumb => '50x50>'},
                    :path => ":rails_root/public/images/:class/:id/:style_:basename.:extension",
                    :url => "/images/:class/:id/:style_:basename.:extension"
 
  validates_uniqueness_of :name
  validates_presence_of   :name, :start_date, :end_date
  validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/gif']
end

O interessante da linha abaixo, é que posso definir todos os tamanhos de imagens que desejo gerar em cima da imagem original, nesse trecho de código eu também alterei o path de armazenamento das imagens, fiz as imagens ficarem no diretório public_html/images/tournaments/id_do_banco_de_dados/imagens_em_diversas_dimensões:

1
2
3
4
  has_attached_file :image,
                    :styles => {:large => '600x600>', :medium => '300x300>', :small => '150x150>', :thumb => '50x50>'},
                    :path => ":rails_root/public/images/:class/:id/:style_:basename.:extension",
                    :url => "/images/:class/:id/:style_:basename.:extension"

A linha seguinte informa os tipos de mime types aceitos:

1
  validates_attachment_content_type :image, :content_type => ['image/jpeg', 'image/png', 'image/gif']

Agora você precisa definir que o seu formulário de cadastro trabalha com multipart, para enviar dados binários:

1
2
3
4
  <% form_for :tournament, @tournament, :url => { :action => 'create' }, :html => { :multipart => true } do |form| %>
    <%= render :partial => 'form', :locals => { :form => form } %>
    <div class="submit"><%= submit_tag "Criar" %></div>
  <% end %>

No código acima eu chamo o partial _form.rhtml, segue o seu conteúdo abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<%= error_messages_for 'tournament' %>
 
<!--[form:tournament]-->
<p><label for="tournament_name">Nome</label>
<%= form.text_field :name  %></p>
 
<p><label for="tournament_description">Descrição</label>
<%= form.text_area :description  %></p>
 
<p><label for="tournament_image">Imagem</label>
<%= form.file_field :image %></p>
 
<p><label for="tournament_is_active">Ativo</label>
<%= form.check_box :is_active  %>
 
<p><label for="tournament_start_date">Data de início</label>
<%= form.date_select(:start_date, :order => [:day, :month, :year], :use_month_numbers => true) %></p>
 
<p><label for="tournament_end_date">Data de término</label>
<%= form.date_select(:end_date, :order => [:day, :month, :year], :use_month_numbers => true)  %></p>
<!--[eoform:tournament]-->

Nesse partial _form.rhtml é declarado o campo para upload da imagem:

1
<%= form.file_field :image %>

Perceba que na tabela do banco de dados não existe a coluna chamada image, mas sim aquelas 4 que criei no migrate. Aqui que entra a mágica do paperClip juntamente com o model, ele consegue fazer o upload da imagem e definir os valores para os 4 campos no model.

Para exibir as imagens e suas diversas proporções use:

1
2
3
4
<%= image_tag @tournament.image.url(:thumb)  %>
<%= image_tag @tournament.image.url(:small)  %>
<%= image_tag @tournament.image.url(:medium)  %>
<%= image_tag @tournament.image.url(:large)  %>

Pronto! Depois de pegar o jeito com o paperClip você vai dar risada a toa. ;-)

Se você gostou desse texto e acha que ajudou você, me recomende: Recommend Me.

  • Share/Bookmark