Blog sobre Ruby on Rails.
19 fev
Fala galera!
Vai uma dica muito legal, para quem quiser montar um script que precise executar comandos no console, como exemplo:
Basta usar o método system(“comando”).
Vamos abrir o console do ruby para exemplificar, então, abra o console e digite irb.
system('ls -lha')
16 fev
Fala pessoal!
Recentemente estava tendo um problema para utilizar um plugin javascript, que precisava de um retorno json, no seguinte formato por exemplo:
[{"value":"2","caption":"AK"},{"value":"1","caption":"AL"}]
Então criei uma action para retonar os devidos valores:
def states
respond_to do |format|
format.json do
state = State.find(:all)
render :json => state
end
end
end
Sendo que por padrão estava sendo retornado:
[{"state":{"id":"2","name":"AK"}},{"state":{"id":"1","name":"AL"}}]
Por padrão o método to_json, através da configuração ActiveRecord::Base.include_root_in_json = true , inclui em seu retorno o root, que no caso é o nome de nosso modelo.
Então para resolvermos o problema, basta informar para não incluir o root no retorno do json, assim:
def states
ActiveRecord::Base.include_root_in_json = false
respond_to do |format|
format.json do
states = State.find(:all)
render :json => states
end
end
end
O plugin, ainda pedia que retornássemos dois campos, “value” e “caption”, e no meu caso estava retornando os campos da tabela, “id” e “name”.
Então para resolvermos isso, basta passar o parâmetro :select do método find, ficando assim:
def states
ActiveRecord::Base.include_root_in_json = false
respond_to do |format|
format.json do
states = State.find(:all, :select => "name AS caption, id AS value", :order => 'name')
render :json => states
end
end
end
Pronto! Agora nosso retorno será exatamente como o plugin requer.
[{"value":"2","caption":"AK"},{"value":"1","caption":"AL"}]
Bem pessoal, espero que tenha ajudado de alguma forma, assim como me ajudou!
Abraços
13 fev
Olá pessoal!
Recentemente tive a necessidade de migrar meu blog que estava hospedado no wordpress.com(diegonogueira.wordpress.com) para um domínio próprio em um servidor diferente(diegonogueira.com.br), pois precisava ter mais controle sobre meu blog, por exemplo: instalar novos plugins, temas, incluir um google adsense, etc..
Porém não queria perder meus posts, comentários, posicionamento do google e etc.
Bem depois de rodar um pouco na net, consegui fazer a migração e quero compartilhar com vocês todo o passo a passo.
Vamos trabalhar com os seguintes exemplos:
1- exemplo.wordpress.com (blog no wordpress que será migrado)
2- exemplo.com.br (novo blog)
ATENÇÃO: Este processo, pode demorar algunas horas ou dependendo alguns dias, então esteja ciente que o seu blog ficará fora do ar.
E o custo será de aproximadamente $20.00
Alugar um provedor de hospedagem que suporte(php, mysql), ou se você tiver um servidor próprio melhor ainda.
Instale também o wordpress.
OBS: Existem alguns provedores de hospedagem que já vem com opção de instalar o wordpress
Comprar o domínio desejado, no caso exemplo.com.br e configurar o DNS para apontar para o servidor que acabamos de alugar.
NOTA: Só passe para o 3º passo, quando seu domínio estiver devidamente configurado, apontando para o novo servidor.
Agora vamos exportar todos os posts, comentários e etc do blog antigo exemplo.wordpress.com.
Acesse o painel de seu blog, e vá até Ferramentas>>Exportar, e faça o download do arquivo.
Na nova instalação do wordpress, vamos importar todo o conteúdo exportado anteriormente.
Para isso acesse o painel de controle de seu novo blog e vá no menu Ferramentas >> Importar. Agora importe o arquivo e teremos todos conteúdo que tinhamos antes.
Bem, agora você terá que mudar o DNS do seu domínio para apontar para o wordpress.
Então vá na sua configuração de DNS e faça:
1- Copie tudo que estiver lá, pois iremos retornar para o original em breve.
2- Apague todas a entradas DNS
3- Altere o master para ns1.wordpress.com
4- Altere o slave para ns2.wordpress.com
Caso você não consiga alterar o DNS, provavelmente ainda não esta liberado para o seu domínio, então vamos entrar em contado com o suporte e solicitar que permitam o acesso ao DNS do wordpress.
Mande um e-mail para support@wordpress.com, se quiser pode usar o seguinte modelo:
Assunto: Help with Domain Mapping
Mensagem:
To Wordpress Support Team,
I have being using the wordpress hosting on the last year, and now I'm migrating my blog to my own server.
The alteration procedure done through wordpress admin page didn't worked.
I would like that you manually insert my new dns entries on your DNS server. Could it be possible?
Here is my new dns entry: exemplo.com.br
I'm looking forward to hearing from you.
Cheers,
ATENÇÃO: Lembre-se que ao fazer essa passo, seu domínio não ira mais apontar para o seu servidor de hospedagem e se você tiver e-mails configurados para este domínio, o mesmo não estará disponível.
Acesse o painel do antigo wordpress, e vá para Melhorias>>Domínios, digite o domínio desejado, no caso exemplo.com.br e clique em adicionar domínio ao blog.
Bom, agora você terá que pagar $9.97, via paypal ou via cartão de crédito.
Após a inclusão do seu domínio exemplo.com.br, marque o mesmo como primário.
NOTA1: Pagamento realizado com paypal, pode demorar muito tempo, já com o cartão de crédito é efetuado na hora.
NOTA2: Pronto, agora é só aguardar até que seu domínio novo exemplo.com.br esteja sendo redirecionado para exemplo.wordpress.com para prosseguir para o próximo passo.
Vamos para o penúltimo passo. Altere novamente as entradas DNS, sendo que agora vamos voltar para as configurações que copiamos (5º Passo), lembram? Vamos apontar para o novo servidor.
NOTA: Tenha certeza de que foi alterado corretamente para o novo servidor antes de prosseguir para o próximo passo.
Em fim, o último passo!
Volte ao painel de administração do seu blog antigo exemplo.wordpress.com. Vamos novamente para o menu Melhorias>>Domínio. Agora basta clicar em Renew no seu novo domínio exemplo.com.br. Será necessário pagar $10.00 para efetivação do serviço.
Esse pagamento vale por 1 ano, após esse período se você quiser continuar com o serviço de redirecionamento, terá que pagar para renovar por mais 1 ano. Acredito que 1 ano é o suficiente.
Bem é isso, espero que tenham gostado!
Forte abraço!
11 fev
Por Bruno Costa
(brtotal5@gmail.com)
Quem nunca teve seu “branco criativo”?
Alguns meditam, outros jogam video game (de preferência jogos de última geração), outros vão dar uma volta..o certo é que todos nós já passamos por isso não é mesmo?
Nessa temida hora que entra em cena o principal aliado dos designers de plantão: as referências!
Todo o bom Designer, seja de interfaces, seja web designer, tanto faz, tem nos seus favoritos os sites que lhe inspiram e novas idéias fresquinhas acabam surgindo. Afinal, reiventar é a moda: filmes, carros, roupas, tudo hoje em dia segue essa tendência do minimalista ao “over” temos uma reinvenção de algo ou alguma coisa que já deu certo.
Bom eu listei 10 sites que considero muito bons para buscar inspiração (e coloca bom nisso) espero que possa ser útil a todos!!!
10° lugar:
Site da agência interativa mais bacana que conheci nos últimos tempos, todo em flash com um visual super atual que une um conceito arrojado de interatividade com um design clean e sofisticado.
9° lugar:
Empresa de webdesign, o site impressiona, a mim pelo menos, pelo belo estilo CSS + WEB 2.0
Coloco ele como um dos meus favoritos!
8° lugar
Navegação e Simplicidade. Esse site mostra que podemos fazer algo diferente e sair do lugar comum, mesmo que investindo no simples.
7° lugar:
Portifólio incrível. Flash muito bem feito.
6° lugar:
Site para referências, possui várias categorias legais como melhores e-commerce e etc.
5° lugar:
Muito bom!!!!
4° lugar:
Muito bem feito. O site é bacana principalmente por causa do menu, muito legal!!!
3° lugar:
Site com conteúdo para dar e vender, na minha opinião o melhor site para referências, tutoriais e etc.
2° lugar:
Site do Playstation 3.
1° lugar:
Cara, se você quer ver bons sites esse é o lugar!!!!!!!
Galera essa é a lista de sites que eu uso para buscar inspiração, não só de visual, também de conteúdo, organização , tendências e etc…
Depois vou fazer uma seleção apenas dos nacionais ok????
Abraços a todos!
11 jan
Fala galera!!
Vou falar um pouco de um recurso muito legal do rails, polymorphic routes.
Quem nunca esteve na seguinte situação:
Ter um controller ou uma view que precisam ser utilizadas por vários outros modelos, por exemplo:
person_photos_url(@person) city_photos_url(@person) state_photos_url(@person)
No exemplo precisamos utilizar photos para “People“, “City” e “State“, mas como faremos isso se precisamos definir as rotas especificamentes no controller e nas views? Muito simples, utilizaremos polymorphic routes!
Vejam alguns exemplos:
OBS: Não é obrigatório ter uma associação polimórfica para utilizar este recurso. Para tudo ficar de forma dinâmica, dentro do controller photos, carregaremos o modelo para uma variavel de nome padrão, por exemplo “@object“, mas ou menos assim:
before_filter :load_object ... def load_object @object = if params[:person_id] Person.find(params[:person_id]) elsif params[:city_id] City.find(params[:city_id]) elsif params[:state_id] State.find(params[:state_id] else redirect_to access_denied_url end end ...
Agora basta incluir a chamada polymorphic_url onde for necessário que ele transformará na rota necessária para seu modelo, vejamos algumas rotas:
#Index #person_photos_url(@person) -> /people/1/photos #city_photos_url(@city) -> /cities/1/photos polymorphic_url(@object, :photos) #New #new_person_photo_url(@person) -> /people/1/photos/new #new_city_photo_url(@city) -> /cities/1/photos/new new_polymorphic_url(@object, :photo) #Edit #edit_person_photo_url(@person, @photo) -> /people/1/photos/1/edit #edit_city_photo_url(@city, @photo) -> /cities/1/photos/1/edit edit_polymorphic_url(@object, @photo) #Show #person_photos_url(@person, @photo) -> /people/1/photos/1 #city_photos_url(@city, @photo) -> /city/1/photos/1 polymorphic_url(@object, @photo)
Essas chamadas podem ser utilizadas tanto em controllers, quanto em views:
... #Controller redirect_to polymorphic_url(@object, :photos) ... #View <% form_for polymorphic_url(@object, :photo) do |f| %> ... <% end %> <%= link_to "New Photo", pholymorphic_url(@object, :photo) %>
E não acaba por aqui!!!
#Index Comment #edit_person_photo_comments_url(@person, @photo) -> /people/1/photos/1/comments #edit_city_photo_comments_url(@city, @photo) -> /cities/1/photos/1/comments polymorphic_url(@person, @photo, :comments) #New Comment #new_person_photo_comment_url(@person, @photo) -> /people/1/photos/1/comments/new #new_city_photo_comment_url(@city, @photo) -> /cities/1/photos/1/comments/new polymorphic_url(@person, @photo, :comment) #Edit Comment #edit_person_photo_comment_url(@person, @photo, @comment) -> /people/1/photos/1/comments/1/edit #edit_city_photo_comment_url(@city, @photo, @comment) -> /cities/1/photos/1/comments/1/edit polymorphic_url(@person, @photo, @comment)
E por ai vai…
É isso ai galera! Espero que tenha ajudado em alguma forma!
Abraços!
7 dez

Olá pessoal!
Escrevi uma matéria bem legal na revista TIdigital na edição dezembro/2009 sobre ruby on rails (Ruby on rails na prática). Caso queiram conferir já esta nas bancas.
Abraços a todos!
23 nov
Olá pessoal!!
Recentemente tive vários problemas ao tentar conectar o ruby com o banco postgres via dbi com a porta diferente da padrão 5432. Era erro atrás de erro, só conseguia conectar com a porta padrão 5432, mas queria utilizar outra, por exemplo, 5433. Até que consegui assim:
require 'dbi' con=["DBI:Pg:dbname=nome_do_banco;host=localhost;port=porta", "nome_do_usuario", "senha"] DBI.connect(*con)
É isso ai!
Abraços!
13 set
Fala galera!
Vai uma dica para quem precisa testar com rspec um controle que esta utilizando nested attributes.
Digamos que temos um model assim e que criou toda estrutura utilizando o script/generate rspec_scaffold product:
class Product < ActiveRecord::Base
#validates
validates_presence_of :name
validates_presence_of :line_id
#associations
has_many :photos, :as => :photograph, :dependent => :delete_all
#nested attributes
accepts_nested_attributes_for :photos, :allow_destroy => true,
:reject_if => proc { |s| s['image'].blank?}
end
Provavelmente na hora que rodar um rake spec, você terá um erro em:
describe "GET new" do
it "assigns a new product as @product" do
Product.stub!(:new).and_return(mock_product)
get :new
assigns[:product].should equal(mock_product)
end
end
Então vamos alterar para que este teste passe:
describe "GET new" do
it "assigns a new product as @product" do
product_model = mock_model(Product, :photos => mock_model(Photo))
Product.stub!(:new).and_return product_model
product_model.photos.should_receive(:build)
get :new
assigns[:product].should equal(product_model)
end
end
Pronto, agora seu teste ira passar!
25 jul
Fala galera! Achei um vídeo muito legal sobre Desenvolvimento ágil.
Espero que gostem!
abraços
25 jul
Fala galera!
Separei vários materiais legais de Cucumber na Internet, e gostaria de compartilhar com vocês:
Artigos
http://cassiomarques.wordpress.com/2008/11/16/testes-funcionais-no-rails-usando-o-cucumber/
ScreenCasts
http://railscasts.com/episodes/155-beginning-with-cucumber
http://railscasts.com/episodes/159-more-on-cucumber
Documentação
http://rdoc.info/projects/aslakhellesoy/cucumber
Apostilas
Se eu achar mais algum material, coloco aqui para vocês.
Fiquem a vontade para me enviar materiais também, ok?
Abraços