Arquivo

Textos com Etiquetas ‘Ruby on Rails’

[IT Web - Ruby Fundamental] Curso grátis de Rails 4

2 de maio de 2013

7Masters Ruby: 7 coisas que todo desenvolvedor Ruby on Rails deveria fazer

2 de julho de 2012

No dia 27 de junho de 2012 rolou no iMasters a edição Ruby do 7Masters, um evento que reúne 7 palestrantes, no qual cada um deles faz um apresentação de 7 minutos de um assunto relacionado ao tema do evento.

Eu participei com a apresentação “7 coisas que todo desenvolvedor Ruby on Rails deveria fazer”, mostrando dicas que irão ajudar a manter o código livre de erros, deixá-lo mais fácil de ser mantido e fazer com que os usuários da aplicação tenham uma experiência mais agradável ao utilizá-la.

 

Abaixo estão os slides de palestra:

 

Agradeço ao iMasters pela oportunidade e ao Alê Borba pelo convite.

Eventos, Ruby , , , , , ,

[IT Web - Ruby Fundamental] Curso grátis de Engenharia de Software para SaaS com Ruby on Rails

2 de junho de 2012

RubyConf Brasil 2011: Vídeo e slides da palestra Multitenancy em Rails

7 de novembro de 2011

A RubyConf Brasil 2011, a maior conferência com foco em Ruby da América do Sul, aconteceu nos dias 3 e 4 de novembro, com muitas palestras interessantes, networking e discussões sobre Ruby e desenvolvimento de software.

Na palestra Multitenancy em Rails: cortando custos e aumentando capacidade, Ricardo Bernardelli e eu falamos sobre a mudança de arquitetura da WebStore, loja virtual desenvolvida pela equipe de SaaS da Locaweb, onde utilizamos uma opção não tão usual de multitenancy em Rails.

O vídeo da apresentação está disponível aqui, inclusive com sincronia de slides, disponibilizado pela Eventials.

Você também pode visualizar os slides no SlideShare ou fazer download do arquivo PDF.

Meu agradecimento a todos que estiveram presentes na RubyConf acompanhando a palestra ou que assistiram remotamente pela transmissão ao vivo online, e também a todos os feedbacks positivos que recebemos.

Palestrantes da RubyConf Brasil 2011 (por Daniel Cukier)

Palestrantes da RubyConf Brasil 2011 (por Daniel Cukier)

Eventos, Ruby , , , , , ,

Irei palestrar na RubyConf Brasil 2011

23 de setembro de 2011

A RubyConf Brasil é a maior conferência com foco em Ruby da América do Sul e é comparável em tamanho às maiores conferências de tecnologia no continente.

O evento desse ano acontecerá nos dias 3 e 4 de novembro, no Centro de Convenções Frei Caneca, que fica próximo à avenida Paulista em São Paulo.

Irei palestrar, juntamente com Ricardo Bernardelli, sobre a mudança de arquitetura da WebStore, loja virtual desenvolvida pela equipe de SaaS da Locaweb.

Na palestra Multitenancy em Rails: cortando custos e aumentando capacidade, iremos falar como a escolha de uma opção não tão usual de multitenancy em Rails melhorou a arquitetura da WebStore, que antes possuía 1.000 clientes, distribuídos em 12 servidores Web, e passou a utilizar apenas um servidor com mais 4.000 clientes.

As inscrições para o evento foram abertas ontem, com valor promocional de R$ 150,00 até 27/09/2011, e espera-se mais de 700 participantes, a exemplo do que aconteceu na edição do ano passado.

A programação, lista completa dos participantes e demais informações você tem no site do evento.

Eventos, Ruby , , , , , ,

Material de estudo sobre MongoDB e MongoMapper

21 de junho de 2011

Ontem no trabalho minha equipe fez alguns estudos e experiências com o MongoDB, um banco de dados não relacional orientado a documentos, e com o MongoMapper, um ORM em Ruby para MongoDB, para um novo projeto em Ruby on Rails 3 que iremos desenvolver.

Abaixo segue alguns links úteis que encontrei. Os que eu considero mais interessantes estão em vermelho.

MongoDB Quickstart OS X
http://www.mongodb.org/display/DOCS/Quickstart+OS+X

MongoDB Tutorial
http://www.mongodb.org/display/DOCS/Tutorial

SQL to Mongo Mapping Chart
http://www.mongodb.org/display/DOCS/SQL+to+Mongo+Mapping+Chart

Mongo DB Advanced Queries
http://www.mongodb.org/display/DOCS/Advanced+Queries

MongoDB Data Modeling and Rails
http://www.mongodb.org/display/DOCS/MongoDB+Data+Modeling+and+Rails

Video Presentation “Schema Design: Data as Documents” (via Daniel Konishi)
http://www.10gen.com/presentation/mongosv2010/schemadesign

Rails Cast MongoDB and MongoMapper
http://railscasts.com/episodes/194-mongodb-and-mongomapper

MongoMapper Documentation
http://mongomapper.com/documentation

Como fazer queries com “or” no MongoMapper?
http://umamao.com/questions/Como-fazer-queries-com-or-no-MongoMapper

Ruby , , , , , , , ,

2010 em livros

5 de janeiro de 2011

Estou a “plagiando” uma idéia de Phillip Calçado que fez um post em seu blog mostrando os livros lidos no ano de 2010, com um pequeno comentário sobre cada um.

Com certeza minha lista é muito mais modesta e curta, mas a idéia de compartilhar conhecimento é a mesma.

Esse post também serve para me alertar a ler mais, mesmo com toda a correria de trabalho, família, estudo e prática de esportes, gostaria de ter lido mais que 7 livros durante 2010.

Os livros são apresentados na ordem que foram lidos:

Clean Code: A Handbook of Agile Software Craftsmanship

Clean Code: A Handbook of Agile Software Craftsmanship

Robert C. Martin
Prentice Hall
August 2008

Muito bom

Todo programador deveria ler. Uncle Bob nos concede um pouco de sua vasta experiência em desenvolvimento de software, mostrando como deixar seu código mais enxuto, legível e simples. Esse livro serviu de inspiração para várias palestras e apresentações por aí sobre como escrever código de melhor qualidade.

The RSpec Book: Behaviour-Driven Development with RSpec, Cucumber, and Friends

The RSpec Book: Behaviour-Driven Development with RSpec, Cucumber, and Friends

David Chelimsky, Dave Astels, Zach Dennis, Aslak Hellesøy, Bryan Helmkamp, Dan North
The Pragmatic Programmers
December 2010

Ótimo

Essencial para quem quer aprender RSpec. Explica como seria o ciclo ideal de BDD. Também traz exemplos práticos de utilização de RSpec e Cucumber com Ruby e Ruby on Rails.

JavaScript: The Good Parts

JavaScript: The Good Parts

Douglas Crockford
O’Reilly
May 2008

Muito bom

Quem curte JavaScript irá gostar bastante. Fiz anotações sobre esse livro nesse post.

Design Patterns in Ruby

Design Patterns in Ruby

Russ Olsen
Addison-Wesley Professional
December 2007

Bom

Traz uma boa parte dos design patterns apresentados pela GoF utilizando Ruby. O que eu achei mais interessante foi a abordagem utilizada pelo autor: dado um design pattern, o mesmo é implementado de uma maneira clássica e depois reimplementado usando os recursos que o Ruby oferece, como por exemplo, metaprogramação, tornando alguns patterns totalmente diferentes de sua implementação original.

Professional ASP.NET MVC 2

Professional ASP.NET MVC 2

Jon Galloway, Scott Hanselman, Phil Haack, Scott Guthrie, Rob Conery
Wrox
June 2010

Muito bom

Sempre gostei da séria Professional da Wrox e esse livro mantém a linha de qualidade. Logo no primeiro capítulo tem um passo a passo da construção de uma pequena, mas completa, aplicação ASP.NET MVC 2. Os demais capítulos cobrem os demais recursos do framework. Só pelos autores já vale a leitura.

ASP.NET MVC 2 in Action

ASP.NET MVC 2 in Action

Jeffrey Palermo, Ben Scheirman, Jimmy Bogard, Eric Hexter, Matthew Hinze
Manning
June 2010

Regular

Talvez se eu não tivesse lido o livro da Wrox antes teria classificado melhor este. Em algumas vezes os autores focam demais no uso de ferramentas extras, auxiliares ao desenvolvimento de aplicações ASP.NET MVC 2. Isso é bom para quando você já tem conhecimento e/ou vivência do framework.

Test-Drive ASP.NET MVC

Test-Drive ASP.NET MVC

Jonathan McCracken
The Pragmatic Programmers
June 2010

Regular

Eu esperava bem mais desse livro por se tratar de TDD. Havia imaginado vários passos práticos de desenvolvimento orientado a testes no melhor estilo Kent Beck ou Uncle Bob. Para quem já conhece TDD, não irá ver grandes novidades.

Eu uso o Shelfari como prateleira virtual para organizar os livros que li, estou lendo e pretendo ler.
É bem legal e tem vários recursos. Por exemplo, esse endereço lista os livros que li no ano de 2010.

.NET, Arquitetura, JavaScript, Livros, Ruby, TDD , , , , , , , , , , , ,

Melhores posts do ano de 2010

31 de dezembro de 2010

Como testar gravação de log em Ruby on Rails

17 de novembro de 2010

Em uma aplicação Ruby on Rails, quando você precisa assegurar nos seus testes que a gravação de logs está sendo realizada com sucesso, não há a necessidade de abrir o arquivo físico de log, ler seu conteúdo e verificar se a informação que você deseja está lá.

Ao invés disso, você pode substituir a saída de escrita padrão do log por outra classe de stream, como a StringIO, onde você terá fácil acesso ao que for gravado no log durante o teste.

Log em inglês também é tronco, lenha.

Log em inglês também é tronco, lenha.

Vamos ver um exemplo utilizando RSpec para testar a gravação de log de um método chamado do_something em uma classe modelo SomeModel.

require 'spec_helper'

describe SomeModel do
  before(:each) do
    @some_model = SomeModel.new

    @log_stream = StringIO.new
    @some_model.stub(:logger).and_return(Logger.new(@log_stream))
  end

  describe "#do_something" do
    it "logs info" do
      @some_model.do_something
      @log_stream.string.should include("I am logging something")
    end
  end
end

Na linha 7, criamos uma instância de StringIO atribuindo à variável @log_stream. É nesse objeto que serão gravados todos os logs do nosso teste. Para isso, na linha 8, substituímos o logger original por um stub de Logger que faz referência à instância da classe StringIO que criamos.

Já na linha 14, a asserção do nosso teste verifica se o texto correto foi gravado no stream do log. O método StringIO#string retorna a string bruta, ou seja, o texto que foi gravado no stream.

A seguir está a implementação do método do_something:

class SomeModel < ActiveRecord::Base
  def do_something
    # some implementation

    logger.info "I am logging something"
  end
end

Para fazer testes de gravação de logs em controllers, a idéia é a mesma, basta apenas usar o stub no método logger do controller (linha 6):

require 'spec_helper'

describe SomeModelsController do
  before(:each) do
    @log_stream = StringIO.new
    controller.stub(:logger).and_return(Logger.new(@log_stream))
  end

  describe "GET index" do
    it "logs info" do
      get :index
      @log_stream.string.should include("Now logging in a controller")
    end
  end
end
class SomeModelsController < ApplicationController
  def index
    # implementation

    logger.info "Now logging in a controller"
  end
end

Se você precisa usar log em uma classe que não seja um modelo ou controller, não vai poder chamar o método logger diretamente. Por exemplo, a classe a seguir, foi criada dentro da pasta lib de uma aplicação Rails.

class CoolClass
  def cool_method
    logger.info "Cool log!"
  end
end

Chamando o método cool_method teremos o seguinte erro:
> c = CoolClass.new
> c.cool_method
NameError: undefined local variable or method `logger’ for #<CoolClass:0×1e81bf0>

Resolver isso é simples, basta utilizar Rails.logger:

class CoolClass
  def cool_method
    Rails.logger.info "Cool log!"
  end
end

E no teste para gravação de log o stub é feito na classe Rails (linha 8):

require 'spec_helper'

describe CoolClass do
  before(:each) do
    @cool_class = CoolClass.new

    @log_stream = StringIO.new
    Rails.stub(:logger).and_return(Logger.new(@log_stream))
  end

  describe "#cool_method" do
    it "logs info" do
      @cool_class.cool_method
      @log_stream.string.should include("Cool log!")
    end
  end
end

Ruby, TDD , , , , ,

Primeira submissão para o Ruby Quicktips

30 de outubro de 2010

Há muito tempo atrás, tanto tempo que não tenho certeza examente, acho que no começo de abril de 2010, submeti uma dica para o Ruby Quicktips, um blog dedicado a apresentar dicas pequenas, interessantes e práticas de Ruby e Ruby on Rails.

Aguardei alguns dias para a publicação da dica, já prevendo submeter outras na sequência. Como minha dica não foi publicada, desencanei e esqueci disso.

Para minha surpresa, essa semana recebi um e-mail do Ruby Quicktips informando que minha submissão foi publicada. Só levou mais de 6 meses, mas tudo bem.

A minha dica foi como visualizar um modelo em formato YAML no console, algo MUITO SIMPLES, mas para alguns iniciantes em Rails não é tão óbvio.

Viewing a model in YAML
http://rubyquicktips.tumblr.com/post/1405061475/viewing-a-model-in-yaml

Agora pretendo submeter outras dicas para o Ruby Quicktips, principalmente essas que a gente vai descobrindo no dia-a-dia. Mesmo que demorem para serem publicadas, o que vale é contribuir.

Ruby , , ,