Eu sempre procuro deixar o meu sistema o mais atualizado possível. Volta e meia eu me deparo com problemas de compatibilidade de alguns softwares e a bola da vez foi o Selenium com o Webrat.
Eu estava utilizando o cucumber com o selenium no desenvolvimento de uma aplicação e não estava funcionando.
Depois de muito fuçar vi que o problema era a incompatibilidade do webrat versão 0.5.1 com a versão do firefox que eu estou usando 3.6.6.
Para resolver o problema sem perder toda a sua manhã como eu
siga as instruções abaixo:
1. Crie um diretório onde você possa manipular o conteúdo do jar
mkdir -p ~/tmp/selenium
cd ~/tmp/selenium
2. Copie o arquivo jar do Webrat para a pasta criada
cp ~/.gem/ruby/1.8/gems/webrat-0.5.1/vendor/selenium-server.jar .
OBS: Eu instalei a gem webrat localmente no meu home, você deve realizar uma
adaptação para a sua realidade neste ponto.
3. Descompacte os arquivos contidos no jar e delete o arquivo jar
unzip selenium-server.jar
rm selenium-server.jar
4. Procure os arquivos *.rdf (deve existir 5 destes arquivos):
find . -name "*.rdf"
./customProfileDirCUSTFF/extensions/{538F0036-F358-4f84-A764-89FB437166B4}/install.rdf
./customProfileDirCUSTFF/extensions/readystate@openqa.org/install.rdf
./customProfileDirCUSTFFCHROME/extensions/{503A0CD4-EDC8-489b-853B-19E0BAA8F0A4}/install.rdf
./customProfileDirCUSTFFCHROME/extensions/{538F0036-F358-4f84-A764-89FB437166B4}/install.rdf
./customProfileDirCUSTFFCHROME/extensions/readystate@openqa.org/install.rdf
5. Em cada um destes arquivos você verá:
<em:maxVersion>3.5.*</em:maxVersion>
Mude para
<em:maxVersion>3.6.*</em:maxVersion>
6. todos os arquivos agora estão prontos. Gere novamente o arquivo jar
e mova para o local correto do webrat:
zip -r selenium-server *
mv selenium-server.zip selenium-server.jar
mv selenium-server.jar ~/.gem/ruby/1.8/gems/webrat-0.5.1/vendor/selenium-server.jar
OBS: Eu instalei a gem webrat localmente no meu home, você deve realizar uma
adaptação para a sua realidade neste ponto.
* Referência: http://www.qaautomation.net/?p=15
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