Posts Tagged ‘configuração’

Ruby on Rails Validação de Data

Postado em 05 nov 2009
Categoria(s) Ruby on Rails

Não existe no core do Ruby on Rails um validator para datas, mas existe um plugin que faz muito bem essa tarefa, o nome do plugin é validates_date_time.

Esse plugin está disponível no Github em: http://github.com/nickstenning/validates_date_time/.

Instalação

./script/plugin install git://github.com/nickstenning/validates_date_time.git

Configuração

class Investor < ActiveRecord::Base
  validates_date :date_of_birth
end

Esse validator aceita datas no formato: 2006-01-01 ou 1 Jan 06 ou 1 Jan 2006 ou 10/1/06 ou 1/1/2006, por padrão o plugin espera datas no formato dia/mês/ano, caso você queria datas no formato americano e necessário adicionar a seguinte linha no seu config/environment.rb:

ValidatesDateTime.us_date_format = true

Outro detalhe é que o validates_date por padrão considera que o campo de data é obrigatório, caso você queria que seu preenchimento seja opcional você pode adicionar o parâmetro :allow_nil => true da seguinte forma:

validates_date :date_of_birth, :allow_nil => true

I18n

Eu procurei na internet uma forma elegante para usar I18n no plugin, eu encontrei apenas uma (http://github.com/nickstenning/validates_date_time/blob/master/test/fixtures/en.yml), mas essa solução não contempla todas as mensagens de validações, existe a mensagem de validação de data inválida que eu não consegui traduzir da forma do link anterior, desta forma eu implementei manualmente o I18n para a mensagem de validação “is an invalid date” da seguinte forma:

No arquivo config/locales/pt-BR.yml adicionei o atributo invalid_date:

pt-BR:
  # Active Record
  activerecord:
    errors:
      messages:
        invalid_date: "é uma data inválida"

e no model eu configurei da seguinte forma:

class Investor < ActiveRecord::Base
  validates_date :date_of_birth, :message => I18n.t('activerecord.errors.messages.invalid_date')
end

O plugin também trabalha com validações time e date time, nos formatos: 1pm ou 10:11 ou 12:30pm ou 8am e 1 Jan 2006 2pm ou 31/1/06 8:30am.

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

  • Share/Bookmark

Como instalar o mod_rewrite do Apache no Ubuntu

Postado em 08 jul 2009
Categoria(s) Ubuntu

Se você quer trabalhar com urls amigáveis, o mod_rewrite do Apache é a solução para o seu problema. Ele permite fazer a rescrita das urls.

Para instalar no Ubuntu:

sudo a2enmod rewrite

Reinicie o Apache para pegar essa nova configuração:

sudo /etc/init.d/apache2 restart

Para saber mais sobre o mod_rewrite pergunte ao Oráculo: http://www.google.com.br/search?hl=pt-BR&q=apache+mod_rewrite&btnG=Pesquisar&meta=.

  • Share/Bookmark

Ruby on Rails Paperclip como definir uma imagem padrão quando o usuário não fez upload da imagem

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

Para definir uma imagem padrão de exibição, quando o usuário não fizer o upload de uma imagem, você deve usar a opção :default_url do Paperclip.

Por exemplo, digamos que você deseja exibir a imagem abaixo, quando o usuário não definiu uma foto no seu profile.

No Picture

Exemplo de configuração do Paperclip:

1
2
3
4
5
has_attached_file :picture,
                    :styles => {:thumb => '50x50#'},
                    :path => ":rails_root/public/images/pictures/:id/:style_:basename.:extension",
                    :url => "/images/pictures/:id/:style_:basename.:extension",
                    :default_url => "/images/no_pictures/:style/missing.png"

A linha abaixo, diz para o Paperclip procurar uma imagem padrão no diretório /images/no_pictures/:style/missing.png, onde :style é o tamanho do resize da imagem, nesse exemplo thumb:

...
:default_url => "/images/no_pictures/:style/missing.png"
...

Desta forma você precisa criar o diretório /images/no_pictures/thumb/ e colocar a imagem missing.png lá.

Quando você usar:

1
<%= image_tag(user.picture.url(:thumb), :alt => user.full_name) %>

Caso a imagem não exista o Paperclip usará a imagem padrão de exibição /images/no_pictures/thumb/missing.png

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

  • Share/Bookmark

Usando o Vim para Programar em Ruby on Rails

Postado em 21 abr 2009
Categoria(s) Ruby on Rails

Como todas as pessoas que procuram desenvolver com qualidade e agilidade, eu tive a minha saga até encontrar uma boa ferramenta de edição de código.

Eu só trabalho usando Linux, com certeza ele é o sistema operacional mais produtivo para trabalhar com desenvolvimento em tecnologias livres, para programar em PHP, Ruby on Rails, Java, Python e outras é uma maravilha. A quantidade de softwares e coisas legais é imensa.

Nessa minha saga e evolução no mundo dos editores/IDE já usei Dreamweaver, Gedit, Geany, Eclipse, Aptana, Komodo, Bluefish e por último o NetBeans. Sempre tinha alguns detalhes neles que acabava me irritando, algo que eles não conseguiam fazer. Alguns tinham tantos recursos que acabavam sendo pesados demais. Por último eu estava usando o NetBeans, ele tem umas sacadas legais e algumas coisas divertidas, mas é absurdamente pesado, outro detalhe é que algumas IDE’s tem a mania descontrolada de querer fazer tudo através de interface gráfica, trilhões de janelas para fazer coisas super simples, o terminal é um lance necessário em uma IDE, muitas coisas podem ser feitas em secundos através de um shell. Não a nada de errado em usar o shell, graças a ele que a produtividade aumenta muito, quem acha que interface gráfica aumenta a produtividade está enganado, as vezes ela só enrola mais as coisas.

Através de toda essa saga acima eu acabei chegando no VIM, usando especificamente o Gvim no Gnome para desenvolver em Ruby on Rails. Até o presente momento só são ótimas opiniões formadas sobre ele.

Nesse post vou mostrar como ganhar mais produtividade usando o Gvim.

Todos os passos abaixo foram feitos no Ubuntu 8.04, por que no Ubuntu? Porque ele é simples, tem uma porção de distribuições Linux por ae que complicam demais as coisas, o Ubuntu é sucesso porque é simples de usar. Existe uma grande chance de coisas simples fazerem mais sucesso que as coisas complicadas. :-)

Instalação do Gvim

1
sudo apt-get install vim vim-gnome vim-addon-manager vim-common vim-full vim-gtk vim-gui-common vim-rails vim-ruby vim-runtime vim-tiny exuberant-ctags ncurses-term

Instalação do Git

1
sudo apt-get install git

Instalação da gem para busca de arquivos

Essa gem está no github, desta forma é necessário adicionar o seu repositório: gem sources -a http://gems.github.com

1
sudo gem install jamis-fuzzy_file_finder

Instalação do pacote de configurações para o vim

Agora vamos instalar um pacote de configurações prontas para o vim, esse pacote foi criado pelo Fabio Akita, esse pacote já tem uma série de plugins, temas e snippets.

1
git clone git://github.com/akitaonrails/vimfiles.git ~/.vim

Você precisa criar o arquivo ~/.vimrc e adicionar o conteúdo abaixo:

1
2
3
4
5
6
7
source ~/.vim/vimrc
 
colorscheme vibrantink
set nu
set sts=2
set sw=2
let g:fuzzy_ignore = "gems/*"

Essas configurações irão fazer o número de linhas aparecer, ignorar os diretórios de gems e outros ajustes.

Os snippets estão em um repositório separado, desta forma precisamos obter esses arquivos, faça os passos abaixo:

1
2
3
cd ~/.vim
git submodule init
git submodule update

Existe um outro ajuste que pode ser feito, mas esse é opcional, da forma como está agora sempre irá aparecer um $ no final de cada linha, para marcar o fim, particularmente eu não gosto disso. Se você quiser é possível retirar essa marcação, edite o arquivo ~/.vim/vimrc procure pelas linhas:

1
2
"display tabs and trailing spaces
set list

E deixe a configuração set list comentada, desta forma:

1
2
"display tabs and trailing spaces
"set list

Feito isso nós já temos uma nova gama de funcionalidades adicionadas ao vim, mas é possível melhorar mais ainda, vamos agora instalar a fonte Monaco usada no TextMate. Essa fonte deixa o código com um visual legal.

Instalação da fonte Monaco

1
2
3
4
5
6
7
8
cd /usr/share/fonts/truetype
sudo mkdir myfonts
cd myfonts
sudo wget http://www.gringod.com/wp-upload/software/Fonts/Monaco_Linux.ttf
sudo chown root.root *.ttf
sudo mkfontdir
cd ..
fc-cache

Agora se você digitar no terminal:

1
gvim

Vai ver o gvim com a fonte Monaco e o tema desert.

Gvim

Com o gvim aberto vamos criar um projeto em Ruby on Rails, e ver as funcionalidades novas que temos no vim. Graças ao plugin rails.vim (http://rails.vim.tpope.net/) foram adicionadas uma série de features.

Criando um projeto Ruby on Rails

Digite no gvim:

1
tecla esc + :Rails autocomplete

Onde autocomplete é o nome da minha aplicação Ruby on Rails nesse exemplo.

A opção irá criar a aplicação com suporte ao banco de dados SQLite, se você quiser suporte ao outro banco de dados digite:

1
2
3
4
tecla esc + :Rails autocomplete -d mysql
ou
tecla esc + :Rails autocomplete -d postgresql
...

Esse comando irá criar uma aplicação Ruby on Rails nova.

Nova Aplicação

Pressione a tecla enter como informado na mensagem.

O plugin rails.vim é bem esperto, ele já vai abrir para você o database.yml para você configurar o banco de dados:

Database

Pressione a tecla i ou insert para editar os dados, faça as alterações necessárias e salve digitando:

1
tecla esc + :w

Uma breve descrição sobre as operações básicas do vim:

  • tecla esc + :w serve para salvar sua alteração (write)
  • tecla esc + :q serve para fechar o arquivo (quit)
  • tecla esc + :x serve para salvar e fechar o arquivo

Criando o banco de dados

1
tecla esc + :Rake db:create

DB Create

Pressione a tecla enter como informado na mensagem.

Criado um scaffold

1
tecla esc + :Rgenerate scaffold car name:string description:text color:string

Será gerado o scaffold para o model car, logo em seguida será exibido o cars_controller.rb:

Cars Controller

Rodando as migrações

1
tecla esc + :Rake db:migrate

Migrate

Visualizando a aplicação

Caso você queira visualizar aplicação nesse momento, você pode inicializar o servidor e ver um preview da aplicação rodando no navegador:

Inicializando o servidor

1
tecla esc + :Rserver

Servidor

Vendo preview no navegador

1
tecla esc + :Rpreview

Preview

Nesse momento o gvim ficará travado e o navegador será aberto para você visualizar o andamento do projeto, quando você fechar o navegador o gvim será destravado.

Navegador

Navegação de arquivos

Eu conheço duas formas de navegação de arquivos, a primeira é muito rápida:

1
tecla esc + ctrl + f

Busca arquivo

Digite o nome do arquivo desejado, por exemplo new:

Busca Arquivo New

A outra forma de navegação é em diretórios, digite:

1
tecla esc + :Vex

Vex

Snippets

Esse pacote que instalamos para o vim, tem muitos snippets já configurados para acelerar a condificação, eles podem ser encontrados no diretório ~/.vim/snippets:

Snippets

Se você olhar nesses diretórios vai poder descobrir as siglas para acessar o snippets, dê uma boa olhada e teste.

Snippets Ruby on Rails

Vamos testar um pouco os snippets, agora que você já sabe procurar arquivos, abra o arquivo car.rb:

1
2
3
tecla esc + ctrl + f
digite car.rb
enter

Model

Digite i ou insert para colocar o gvim em modo de edição e digite:

1
vp + tecla tab

Model vp

Model vp tab

Agora e só apertar tab e ir substituindo os valores.

Caso o snippet não funcione, feche o gvim, acesse o diretório da aplicação Ruby on Rails (autocomplete), estando dentro do diretório autocomplete abra o gvim, agora os snippets tem que funcionar.

A ideia desse post é apenas dar um visão geral, existe várias outras coisas possíveis de fazer, e muitos outros comandos poderosos para trabalhar com Ruby on Rails no vim, por isso eu sugiro que você leia esses outros artigos:

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

  • Share/Bookmark

Ruby on Rails acts_as_tree

Postado em 06 abr 2009
Categoria(s) Ruby on Rails

No Ruby on Rails é possível fazer um model trabalhar em árvore, isso é algo muito interessante quando você precisa trabalhar com categorias e subcategorias. Essa árvore não tem limite de crescimento, você pode ter várias subcategorias dentro de subcategorias.

Esse comportamento de árvore do model recebe o nome de acts_as_tree.

No Ruby on Rails 1.2 o acts_as_tree fazia parte do ActiveRecord, no Ruby on Rails 2 ele não faz mais parte, para usar você precisa instalar o plugin acts_as_tree.

Instalação:

1
ruby script/plugin install acts_as_tree

Configuração:

É necessário ter mais uma coluna na tabela chamada parent_id através dessa coluna é possível estabelecer a relação entre pais e filhos, ou seja, categoria e subcategorias.

Por exemplo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class CreateBackendMenus < ActiveRecord::Migration
  def self.up
    create_table :backend_menus do |t|
      t.string  :title,     :null => false
      t.string  :path,      :null => false
      t.integer :weight,    :null => false, :default => 0
      t.boolean :is_active, :null => false, :default => false
      t.integer :parent_id
      t.timestamps
    end
  end
 
  def self.down
    drop_table :backend_menus
  end
end

Agora no model você deve adicionar o comportamento de árvore acts_as_tree e especificar uma coluna para ordenação:

1
2
3
4
class BackendMenu < ActiveRecord::Base
  # comportamento de árvore
  acts_as_tree :order => 'weight'
end

Desta forma serão criados alguns métodos para você conseguir trabalhar com a árvore:

Representação do Model com Acts as Tree

Representação do Model com Acts as Tree

1
2
3
4
5
6
7
8
root      = Category.create("name" => "root")
child1    = root.children.create("name" => "child1")
subchild1 = child1.children.create("name" => "subchild1")
 
root.parent   # => nil
child1.parent # => root
root.children # => [child1]
root.children.first.children.first # => subchild1

Existe mais 4 métodos que podem ser úteis:

  • ancestors: Retorna lista dos antepassados, a partir da mãe até raiz;
  • root: Retorna o nó raiz da árvore;
  • siblings: Retorna todos os irmãos do nó atual;
  • self_and_siblings: Retorna todos os irmãos e uma referência ao nó atual.

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

  • Share/Bookmark