Como quedarse con las ganas puede no ser sano, he aquí la solución final al oscuro problema que relataba en el anterior post, eso sí, solución en forma de persona con mote, nombre y apellido.
Fundador y desarrollador principal de freshmeat.net, sin duda todo un clásico dentro de los portales de software. Ahí es na. Buscando sobre él me he enterado de que también ha escrito un libro sobre desarrollo con Rails (no tenía ni idea ni sé que tal está).
No recuerdo (ni encuentro) ningún correo suyo en la lista de Rails del que sacar algún apunte certero, pero en su serie de posts "Las aventuras de la escalada" documentó con pelos y señales la arquitectura de sistemas que estaban utilizando para albergar eins.de. Aunque en aquel momento ya no nos contaba nada que nos permitiese mejorar mucho nuestros sistemas (habíamos avanzado en paralelo de forma muy muy similar, como fractales de un mismo algoritmo con algún parámetro ligeramente distinto) nos sirvió para comprobar que íbamos por buen camino. Siempre es agradable descubrir que tu criatura tiene un primo-casi-hermano en Alemania, sobre todo si es de una cepa con tantas y tan buenas canas.
El pasado día 3 en Frankfurt, dentro de la programación de la rails-konferenz, dio una "charla sobre la escalada". En la página 48 del PDF que utilizó durante la misma comentaba cómo habian resuelto el acceso a sus dos servidores de base de datos. Quitando la primera línea para simplificar y sustituyendo su search por nuestro read_only (que desempeñan la misma función), el código fetén sería el siguiente:
current_config = ActiveRecord::Base.connection.instance_variable_get '@config'
new_config = ActiveRecord::Base.configurations.fetch( read_only_action ? RAILS_ENV + '_ro' : RAILS_ENV ).symbolize_keys
ActiveRecord::Base.establish_connection new_config unless new_config == current_config
Consigue lo que yo pretendía con mi optimización (cambiar la conexión sólo si es necesario) pero haciendo un quiebro bueno bueno a la cara oscura del funcionamiento de Rails con los FastCGIs.
poocs.net - patrick en limited-overload punto de
