Ir para o conteúdo
ou

Software livre Brasil

Leandro Nunes dos Santos

Nuvem de Marcadores

Tela cheia
 Feed RSS

Blog

27 de Maio de 2009, 0:00 , por Software Livre Brasil - | Ninguém está seguindo este artigo ainda.

Acessando objetos ActiveRecord utilizando ActiveResource

17 de Maio de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Eu perdi algum tempo procurando uma forma de acessar objetos via ActiveResource de uma aplicação servidora para uma cliente.

O meu problema era que o nome do meu resource na aplicação cliente não era a correspondência exata do nome esperado no meu servidor.

Trocando em miúdos…

Eu tenho uma aplicação servidora com o seguinte controller:


class CategoriesController < ApplicationController

  def index
    @categories = Category.all
    respond_to do |format|
      format.json { render :json => @categories }
    end
  end

end

e outra aplicação cliente com o seguinte resource:


class RemoteCategory < ActiveResource::Base

  self.site = http://localhost
  self.format = :json

end

A minha aplicação servidora roda na porta 3000, e a cliente na porta 3001.

O problema é que utilizando somente este código no meu resource, ele vai procurar pelo recurso no meu servidor utilizando o caminho:

http://localhost/remote_categories.json

O problema é que o meu servidor, obviamente ;) , não tem esta rota. Uma vez que o controller que ele possui tem nome categories, gerando portanto a rota:

http://localhost/categories.json

Entretanto eu não podia modificar o nome do meu resource para Category, pois eu já possuía um outro model com este nome na aplicação.

Então depois de perder alguns minutos encontrei a solução.

Basta definir o nome do elemento no resource. Neste caso em particular definir o element_name no objeto RemoteCategory:


self.element_name = 'category'

A configuração final do resource RemoteCategory fica então:


class RemoteCategory < ActiveResource::Base

  self.element_name = category
  self.site = http://localhost
  self.format = :json

end

Espero que seja útil para outras pessoas ;)



Utilizando as opções do ssh

14 de Abril de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Eu não gosto muito de fazer trabalhos repetitivos, então quando eu percebo que alguma atividade tem o potencial de se tornar repetitiva e entediante trato de arranjar um jeito de automatizar o processo ;)

Claro que algumas vezes eu acabo levando mais tempo automatizando a tarefa do que repentindo-a. Entretanto no somatório de de tempo que seria gasto para se realizar a tarefa quando o tempo tende a infinito, eu acabo economizando muito tempo de minha vida que seria gasto em coisas não tão interessantes ;)

A bola da vez é a necessidade de se executar o comando ’ssh’ diversas vezes com diversos parâmetros diferentes.

Pesquisando um pouco encontrei um forma de otimizar meu tempo.

Se você criar um arquivo de nome ‘config’ na pasta ‘.ssh’ no seu home o ssh carrega este arquivo e procura por opções de configuração que você deseje criar.

Então:

mkdir "~/.ssh"
vim "~/.ssh/config"

Agora basta configurar o arquivo de acordo com a sua necessidade.

No meu caso utilizei os seguintes parâmetros de configuração:


Host leandro
User smurf
Port 22
HostName leandronunes.net

Host servidor
User root
Port 3021
HostName servidor.com.br

Host proxy
User smurf
Port 2299
HostName app.dcc.ufba.br
LocalForward 3128 app.dcc.ufba.br:8080

No primeiro caso:

Host leandro
User smurf
Port 22
HostName leandronunes.net

Eu ganho a possibilidade de acessar meu servidor apenas digitando o comando:

ssh leandro

O ssh lerá o arquivo ‘~/.ssh/config’ e saberá que eu quero acessar o servidor leandronunes.net, com o usuário smurf e utilizando a porta 22.

O segundo caso é semelhante ao caso anterior só que desta vez eu escolho outra porta para acessar o meu servidor cujo host é servidor.com.br

Eu acesso o servidor com o comando:

ssh servidor

O terceiro e último exemplo é mais legalzinho.

Host proxy
User smurf
Port 2139
HostName ufba.br
LocalForward 2148 ufba.br:7070

Eu posso acessar o servidor da UFBa, que utilizo como proxy para acessar o periódicos da capes de casa, com o seguinte comando:

ssh proxy

Somente com isso, o ssh já entende que é para fazer um tunel ssh da minha porta ‘2148′ para a porta ‘7070′ do meu host ‘ufba.br’, que eu acesso utilizando o usuário ’smurf’ na porta ‘2139′.

Seria algo equivalente ao comando:

ssh -p 2139 app.dcc.ufba.br -L 2148:app.dcc.ufba.br:7070

É claro que você precisa configurar o seu navegador ( que eu espero que seja o firefox :) ) para utilizar o proxy.

Existem muitas outras opções que podem ser realizadas utilizando esta técnica.

Se divirta!



Guardando histórico no irb e script/console

4 de Abril de 2009, 0:00, por Software Livre Brasil - 0sem comentários ainda

Tinha uma coisa que sempre me incomodou no console do rails e também no irb que era a possibilidade de se guardar o histórico dos comandos digitados nestes ambientes.

Pois é, agora isso não me incomoda mais. Basta criar um arquivo de nome ‘.irbrc ‘ no home com o seguinte conteúdo:


# load libraries
require rubygems
require wirble

# start wirble (with color)
Wirble.init
Wirble.colorize

Para que o histórico de comandos funcione você precisa da biblioteca ‘libwirble-ruby’ instalada.

aptitude install libwirble-ruby

Pronto. Tudo funciona bonitinho agora ;)