Archive for the 'rails' Category
Refatorando arquivos de configuração
Para reduzir a quantidade de linhas repetidas em arquivos yml, é possível reutilizar blocos. Por exemplo, este arquivo de configuração padrão...
development: adapter: mysql database: my_project_development username: root password: 123 test: adapter: mysql database: my_project_test username: root password: 123 production: adapter: mysql database: my_project_production username: root password: 123
...pode ser refatorado assim:
shared: &shared
adapter: mysql
username: root
password: 123
development:
<<: *shared
database: my_project_development
test:
<<: *shared
database: my_project_test
production:
<<: *shared
database: my_project_production
No comments
Pesquisar e alterar um valor no Hash
Esses dias precisei procurar e alterar um valor específico num Hash, por exemplo:
my_hash = {:key1 => "value1", :key2 => "value2", [{:key3 => "target_value"}]}
Como a classe Hash não oferece busca recursiva por padrão, podemos abri-la e adicionar nosso próprio método.
class Hash def swap_value(target_value, new_value) self.each do |k, v| case v when String self[k] = new_value if v == target_value when Array v.each {|item| item.swap_value(target_value, new_value) } when Hash v.swap_value(target_value, new_value) end end end end
É isso, agora a classe Hash tem um método para find and replace recursivo.
my_hash.swap_value("target_value", "my_new_value")No comments
I18N + datetime_select = erro “can’t convert Symbol into String”
Não acontece se especificar a ordem:
<%= f.datetime_select :date_of_birth,
rder => [:year, :month, :day] %>
Rake temperamental com Mysql no Vista
Configurar o Rails pra rodar no Windows Vista não foi de primeira. Depois de uma briga com o RubyGems porque não tinha configurado a variável de ambiente GEM_PATH, o rake que ficou temperamental e sempre dava a seguinte mensagem:
rake aborted!
Mysql::Error: Commands out of sync; you can't run this command now: SHOW TABLES
Pra corrigir: precisa adicionar ao diretório C:\ruby\bin a DLL libmysql.dll. Achei a resposta aqui, e pra minha sorte eu também tinha o Wamp instalado com uma versão da DLL.
Ctrl+C –> Ctrl+V, rake feliz.
No comments