Posts Tagged ‘yaml’

Ruby on Rails Paperclip com I18n

Postado em 18 nov 2009
Categoria(s) I18n, Ruby on Rails

O plugin paperclip não tem suporte para i18n por padrão.

Então vamos implementar isso no braço, talvez não seja a forma mais elegante do mundo, mas funciona.

No seu model:

class Ong < ActiveRecord::Base
  # Paperclip
  has_attached_file :logo, :styles => { :thumb => "100x100>" }
  validates_attachment_size :logo, :less_than => 50.kilobytes, :message => I18n.t('activerecord.errors.messages.attachment_size', :min => 0, :max => 50.kilobytes)
end

Agora você precisar criar a diretiva activerecord.errors.messages.attachment_size no seu config/locales/pt-BR.yml:

pt-BR:
  # Active Record
  activerecord:
    errors:
      template:
        header:
          one: "Não foi possível gravar: 1 erro"
          other: "Não foi possível gravar: {{count}} erros."
        body: "Por favor, verifique o(s) seguinte(s) campo(s):"
      messages:
        attachment_size: "tamanho do arquivo deve estar entre {{min}} e {{max}} bytes"

Pronto! Seja feliz!
Se o plugin não faz, a gente faz.

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

  • Share/Bookmark

Ruby on Rails conversão de datas com I18n

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

Eu estou desenvolvendo uma aplicação que precisa trabalhar com datas com I18n e fazer conversões para salvar a data no banco de dados e exibir para o usuário de acordo com o seu idioma.

Eu estou usando o Date Picker do jQuery em um campo do tipo text_field.

datepicker

Vou mostrar um esboço de como eu fiz isso, em primeiro lugar eu defini no arquivo config/environment.rb o idioma:

config.i18n.default_locale = 'pt-BR'

Depois eu defini no arquivo config/locales/pt-BR.yml os formatos de data:

pt-BR:
  date:
    formats:
      default: "%d/%m/%Y"
      short: "%d de %B"
      long: "%d de %B de %Y"
 
    day_names: [Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sábado]
    abbr_day_names: [Dom, Seg, Ter, Qua, Qui, Sex, Sáb]
    month_names: [~, Janeiro, Fevereiro, Março, Abril, Maio, Junho, Julho, Agosto, Setembro, Outubro, Novembro, Dezembro]
    abbr_month_names: [~, Jan, Fev, Mar, Abr, Mai, Jun, Jul, Ago, Set, Out, Nov, Dez]
    order: [ :day, :month, :year ]

No meu formulário eu deixei assim:

<% content_for :javascripts do %>
  <%= include_jquery %>
  <%= javascript_include_tag "jquery.maskedinput-1.2.2.min" %>
  <% javascript_tag do %>
    $(document).ready(function() {
      // Adiciona date picker ao campo data de nascimento
      $.datepicker.setDefaults($.extend({showMonthAfterYear: false}, $.datepicker.regional['<%= I18n.locale %>']));
      $("#investor_date_of_birth").datepicker({
        showOn: 'both',
        buttonImage: '/images/calendar.gif',
        buttonImageOnly: false,
        buttonText: '<%= t('ui.admin.crud.datepicker_button_text') %>',
        changeMonth: true,
        changeYear: true,
        yearRange: '1900:<%= Time.now.year %>'
      });
 
      // Adiciona mascara ao campo data de nascimento
      $("#investor_date_of_birth").mask("99/99/9999");
    });
  <% end %>
<% end %>
 
<% form_for [:admin, @investor] do |f| -%>
  <%= f.error_messages %>
 
  <%= f.label :date_of_birth %>
 
  <% if @investor.new_record? %>
    <%= f.text_field :date_of_birth, :class => "smallInput" %>
  <% else %>
    <%= f.text_field :date_of_birth, :value => l(@investor.date_of_birth, :format => :default), :class => "smallInput" %>
  <% end %>
<% end %>

Caso exista o registro é realizado a conversão para exibir a data corretamente no formulário, não é necessário fazer conversão para salvar no banco de dados, o Rails já faz isso automaticamente.

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

  • Share/Bookmark

Como definir campos obrigatórios no symfony usando Validation File

Postado em 25 ago 2008
Categoria(s) Symfony

É necessário implementar um arquivo validação com o mesmo nome da action dentro do diretório validate do módulo.

Por exemplo, edit.yml.

Digamos que o formulário tenha os campos nome e data, e eles devem ser de preenchimento obrigatório.

Deve ficar da seguinte forma o arquivo edit.yml:

1
2
3
4
5
6
7
8
9
10
11
12
methods: [post]
 
fillin:
  enabled: true
 
fields:
  nome:
    required:
      msg: Campo nome é obrigatório.
  data:
    required:
      msg: Campo data é obrigatório.

O atributo fillin define se os campos devem retornados preenchidos se ocorrer erro de validação.

  • Share/Bookmark

Construindo a primeira aplicação no Google App Engine

Postado em 02 jul 2008
Categoria(s) Google App Engine, Python

Vou fazer uma aplicação “Hello, world!” usando Google App Engine.

A primeira coisa a se fazer é ir para a página: http://code.google.com/intl/pt-BR/appengine/

Você precisa fazer o cadastro e informar o seu número de telefone, depois disso o Google irá enviar uma mensagem para o seu celular com o código de acesso para ativação da conta.

Feito o cadastro é preciso baixar o SDK, o SDK é o ambiente de desenvolvimento do Google App Engine, está disponível para ambientes Windows, MAC OS e Linux.

Eu uso a distribuição Ubuntu do Linux, vou mostrar como rodar no Linux, para baixar o SDK visite: http://code.google.com/intl/pt-BR/appengine/downloads.html ou http://googleappengine.googlecode.com/files/google_appengine_1.1.0.zip

Feito do download descompacte em algum diretório no seu home.

O Google App Engine usa a linguagem de programação Python, desta forma você precisa ter o Python 2.5 instalado em sua distribuição.

Instalando o Python 2.5

No terminal digite:

1
2
 
sudo apt-get install python2.5 python2.5-dbg python2.5-dev python2.5-doc python2.5-examples idle-python2.5 apache2

Feito isso já podemos brincar com o Google App Engine.

No raiz do diretório google_appengine existe dois arquivos em Python:

  • appcfg.py – Esse arquivo tem a função de publicar sua aplicação nos servidores do Google.
  • dev_appserver.py – Esse arquivo tem a função de testar sua aplicação localmente.

Dentro do diretório google_appengine crie um diretório chamado helloworld.

Dentro do diretório helloworld crie o arquivo chamado helloworld.py com o seguinte conteúdo:

1
2
3
print 'Content-Type: text/plain'
print ''
print 'Hello, world!'

Esse arquivo apenas define o conteúdo da página como texto e imprime a mensagem “Hello, world!”.

Agora precisamos criar o arquivo de configuração da aplicação.

O Google App Engine usa um arquivo no formato YAML para armazenar as configurações, visto que o formato XML é muito poluído e o YAML é bem mais limpo e leve.

Dentro do diretório helloworld crie o arquivo app.yaml com o seguinte conteúdo:

1
2
3
4
5
6
7
application: helloworld
version: 1
runtime: python
api_version: 1
handlers:
- url: /.*
  script: helloworld.py

Esse arquivo define:

  • A identificação da aplicação, com o nome helloworld.
  • A versão da aplicação, o esquema de versão é importante, pois o Google App Engine permite voltar versões das aplicações depois de publicado.
  • Diz que a linguagem é Python, futuramente o Google App Engine irá dar suporte a outras linguagens de programação.
  • Define qual a url que responde pela requisição, no caso existe uma expressão regular /.* que diz que é tudo da home.

Testando a aplicação localmente

Agora vem uma mágica legal do Google App Engine, gostei disso.

Para rodar a aplicação você precisa estar dentro do diretório google_appengine e dar o seguinte comando:

1
2
 
python dev_appserver.py helloworld/

Onde helloworld é o nome da aplicação.

Se você visitar o endereço: http://localhost:8080 você poderá testar a aplicação que você acabou de fazer, nesse exemplo simples irá aparecer na tela “Hello, world!”.

Pronto! ;-)

  • Share/Bookmark