Marcelo Cajueiro

Dica: Usando Helpers Nos Controllers, Models E No Rails Console

Vou começar a fazer pequenas postagens de dicas que de alguma forma não foram fáceis de encontrar a solução, mas que possa ajudar outras pessoas.

Quem desenvolve em rails sabe que constantemente (ou esporadicamente) queremos usar helpers fora do seu “contexto normal”, as views.

Eu pelo menos sinto esta necessidade, principalmente do uso no console, por ter a mania de testar lá antes de implementar. Até eu descobrir como era fácil de usar os helpers lá, passei um trabalhinho. Off - Cadê a web semântica pra nos ajudar?

Nos models e controllers

O conhecido Ryan Bates postou no também conhecido, Rails Casts, como usar helpers em models e controllers.

Usarei aqui nos dois “ambientes” a mesma forma, pois com a técnica usada no controller pelo Bates, não funciona no Rails 3.

Models and Controllers.rb
1
2
3
4
5
6
7
8
9
# É usada a class ActionController::Base com o método helpers
ActionController::Base.helpers.number_with_delimiter(564654)
# simples assim, como fica longo demais, melhor criar um método
def helper
ActionController::Base.helpers
end
helper.number_with_delimiter(564654)

No Rails console

No console a coisa fica ainda mais fácil:

Rails Console.rb
1
2
3
4
5
# Basta usar o método helper
# pois o ActionView::Base já é carregado
helper.number_with_delimiter(564654)
=> "564.654"

Espero que esta dica ajude.

Abraços e até a próxima.

Migração De Dados Entre Bancos Sem Dor De Cabeça No Rails

Como primeiro post, já que os anteriores vieram de meu antigo blog wordpress, irei dar uma dica que me ajudou após quebrar muito a cabeça.

Eu tinha alguns dados no SQLite e precisava migrar para o PostgreSQL, pesquisei de tudo, mas estava procurando a coisa errada. Eu estava querendo um bom script/programa para converter o dump para que seja 100% compatível com o PG, testei vários e nenhum rodou com sucesso.

Tinha desistido por um tempo, até que pensei que fosse bem mais simples algo que converta para alguma linguagem de marcação, independente da sintaxe do banco. Foi aí que encontrei a gem yaml_db, rápido e extremamente simples de se usar.

Passos Básicos.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Adicionar ao Gemfile (+ bundle install)
gem 'yaml_db'
# no database.yml adicionar o environment a ser feito o dump
# e nesse caso, usado "development" para ser feito o load
in_sql_lite:
adapter: sqlite
#... infos
development:
adapter: postgres
#... infos
# Realizar o dump do "in_sql_lite"
rake db:data:dump RAILS_ENV=in_sql_lite
# Importar para o "development" atravĂŠs do data.yml gerado no dump
rake db:data:load

Há alguns outros recurso e informações interessantes no README dele no github.