rdebug

Preciso debugar meu código ruby, mas como fazer ?

Essa era uma de minhas perguntas e, um amigo me apresentou uma gem chamada ruby-debug. Essa gem é muito útil quando é preciso saber o que está ocorrendo em determinada parte do seu código em tempo de execução.

Para instalar a gem:

sudo gem install ruby-debug

 

Para utilizar é preciso iniciar o servidor em debug:

rdebug script/server

 

Agora é hora de incluir os break point, veja o exemplo:

break product.rb:50

 

Toda vez que o arquivo product.rb for executado ele irá parar na linha 50 e com isso é possível analisar o que deseja via terminal.

Para continuar executando o código ou pular para outro break point:

continue, cont ou c

 

Todos os comandos acima devem ser executados via terminal.

categories Dicas, Ruby on Rails | comments Comentários (0)

Problema ao executar script/console com RVM

Estou utilizando o Ubuntu 9.10 e meu ambiente de desenvolvimento está baseado em RVM, porém, em qualquer uma das versões de ruby que eu executava o comando “script/console” obtinha o erro:

 

@rodrigo {ruby -1.8.6} ~/Projects/loja-virtual (work) $ script/console

Loading development environment (Rails 2.3.5)
/home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/completion.rb:10:in `require’: no such file to load — readline (LoadError)
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/completion.rb:10
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/init.rb:252:in `require’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/init.rb:252:in `load_modules’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/init.rb:250:in `each’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/init.rb:250:in `load_modules’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb/init.rb:21:in `setup’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/lib/ruby/1.8/irb.rb:54:in `start’
from /home/rodrigo/.rvm/rubies/ruby-1.8.6-p383/bin/irb:16

 

A resolução deste problema não é complexa, basta seguir os passos:

1 – O diretório “.rvm/src” contém as versões de ruby instalados.

cd ~/.rvm/src

2 – Vá para o diretório com a versão do ruby onde ocorre o erro. (Ex.: cd ruby-1.8.6-p383/)

cd DIRETORIO_COM_VERSAO_DO_RUBY

3 – Vá para o diretório “ext/readline”

cd source/ext/readline

4 – Execute o comando

ruby extconf.rb

5 – Em seguida

make

6 – Por fim

make install
categories Dicas, Ruby on Rails | comments Comentários (5)

Envolvimento x Comprometimento

A famosa sátira da galinha e do porco, bastante difundida entre desenvolvedores que trabalham com tecnologias ágeis, porém, é uma lição para todas as coisas.

 

chicken_pig

categories Metodologias ágeis | comments Comentários (0)

Autenticação HTTP simples com rails

Umas das formas de validar o usuário é a autenticação HTTP, claro que, está é apenas umas das formas de se validar um usuário com login e senha. E, está é a mais simples.

Vamos supor que possuímos um projeto CRUD (Create, Read, Update, Delete) para cadastro de anúncios. O usuário só poderá alterar ou deletar o anúncio depois de autenticado no sistema.

Para fazermos isso precisaremos incluir códigos no controller. Vejamos:

class AdsController < ApplicationController

  before_filter :check_logged_in, :only => [:edit, :update]

  private
    def check_logged_in
      authenticate_or_request_with_http_basic("Ads") do |user, pass|
        user == "admin" && pass = "teste123"
      end
    end

end

A linha do before_filter é a que defini a chamada do método check_logged_in antes de o usuário editar ou excluir um cadastro.

Existem formas melhores de se autenticar o usuário, está é apenas uma delas e não é das melhores. Visto que o usuário e senha estão definidos direto na programação e temos apenas um usuário.

Veja exemplo da tela de autenticação:

Mebay

Caso o usuario e senha não sejam informados será apresentado a seguinte mensagem:“HTTP Basic: Access denied.”

Claro que está mesma forma de autenticação pode ser melhorada criando um model de “user” e salvando os usuários cadastrados na base de dados. Consequentemente será necessário efetuar alterações no controller “ads”.

Com está modificação temos o ganho de poder ter mais de um usuário cadastrado no sistema; não ter mais o usuário e senha definido como HARD CODE;

Uma outra forma de autenticação bastante comum é a utilização da gem Authlogic.

categories Ruby on Rails | comments Comentários (0)

5º Corrida Oral B

5º corrida oral b

 

Meu Resultado
Nome Peito Equipe Líquido Oficial Ritmo
Rodrigo Lariente Ortiz 3445 Locamotiva 00:38:26.57 00:38:40.99 05:29

 

Oral B

 

Está foi a segunda vez que participo da corrida Oral B, mesmo correndo gripado foi uma ótima corrida.

categories Corridas de rua | comments Comentários (0)