Deshabilitar sesiones para los robots


#1

Ayer implementamos un metodo para deshabilitar las sesiones de los
robots, la informacion la sacamos del libro Rails way, es basicamente
esto:

Tras ojear este articulo del mismo Obie:

http://jroller.com/obie/entry/wrestling_with_the_bots

Me cree mi propia linea de codigo con una recopilacion de robots:

class ApplicationController < ActionController::Base

Explorar el log para mas robots

session :off, :if => lambda {|req| req.user_agent =
~/(Google|msnbot|twiceler|alexa|Sapphire|Gigabot|speedy_spider|Yandex|Yanga|Jeeves|Baidu|bot|SiteUptime|Slurp|WordPress|ZIBB|ZyBorg)/i}

Ayer funciono a las mil maravillas y en el servidor esta funcionando sin
problemas. Pero hoy tras haber estado un tiempo recopilando informacion
sobre otros temas y problemas que tenemos me he llevado una sorpresa al
que rer imiciar el localhost. El problema lo da la linea de codigo que
deshabilita las sesiones para los robots. Os muestro lo que aparece en
el log:

Rendering
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/templates/rescues/layout.erb
(method_not_allowed)
/!\ FAILSAFE /!\ mié, 06 may 2009 12:14:42 +0200
Status: 500 Internal Server Error
undefined method user_agent=' for #<ActionController::CgiRequest:0x4a1d87c> /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/cgi_process.rb:149:inmethod_missing’
/Users/jose/rankia/app/controllers/application.rb:52
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:107:in
call' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:107:insession_options_for’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:106:in
each' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:106:insession_options_for’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:135:in
set_session_options_without_components' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/components.rb:158:inset_session_options’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:129:in
process' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:389:inprocess’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:149:in
handle_request' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:107:indispatch’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in
synchronize' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:indispatch’
/opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:120:in
dispatch_cgi' /opt/local/lib/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:35:indispatch’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel/rails.rb:76:in
process' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:74:insynchronize’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel/rails.rb:74:in
process' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:159:inorig_process_client’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel.rb:158:in
each' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:158:inorig_process_client’
/Users/jose/rankia/vendor/plugins/spawn/lib/patches.rb:53:in
process_client' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:inrun’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel.rb:285:in
initialize' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:285:innew’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel.rb:285:in
run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:268:ininitialize’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel.rb:268:in
new' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel.rb:268:inrun’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel/configurator.rb:282:in
run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:281:ineach’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel/configurator.rb:281:in
run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:128:inrun’
/opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/…/lib/mongrel/command.rb:212:in
run' /opt/local/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281 /opt/local/bin/mongrel_rails:19:inload’
/opt/local/bin/mongrel_rails:19

Si comento la linea en cuestion localhost se inicia sin problemas, pero
claro esta subido al servidor y funciona sin problemas…alguien sabe
porque puede ser?


#2

El error que da es que no reconoce el metodo user_agent. Pero no tiene
sentido, a mis compañeros tienen acceso a localhost y todos hicieron un
update despues de subirlo al servidor…es mas…termino de hacer un
update…y sigue sin irme…:frowning:

Por lo que estoy viendo el CgiRequest esta relacionado con las
sesiones


#3

2009/5/6 Jose vicente Ribera pellicer
removed_email_address@domain.invalid

El error que da es que no reconoce el metodo user_agent. Pero no tiene
sentido, a mis compañeros tienen acceso a localhost y todos hicieron un
update despues de subirlo al servidor…es mas…termino de hacer un
update…y sigue sin irme…:frowning:

No, no te reconoce el método user_agent=, que es distinto. ¿No querrás
hacer
comparación (==) en vez de asignación (=) ? :wink:


#4

No, no te reconoce el método user_agent=, que es distinto. ¿No querrás
hacer
comparación (==) en vez de asignación (=) ? :wink:

Gracias, el problema es que tenia picado esto req.user_agent = ~ … y
con el espacio en blanco entre medio se volvia loco. Mira que habre
mirado la liena unas cuantas veces pero no lo veia… y si no hubiese
sido por tu comentario aun estaria investigando porque podria
ser…simplemete gracias.

Salu2


#5

2009/5/6 Jose vicente Ribera pellicer
removed_email_address@domain.invalid

Um, de hecho, ví el = y no me fijé más, así que podría haberte explicado
bien el problema con la virgulilla a la primera :wink:

Manuel,
http://simplelogica.net + http://www.logicola.net/