Duda teorica: usar App web o App Mac OSX

Hola a todos. Os voy a presentar un ejemplo en el que hara falta una
interacción intensa y continua entre local y remoto.

El Ejemplo:
Una empresa que tiene toda su información (BBDD) en local sobre
ordenadores
Mac OS X y almacenada en File Maker. Esta información también se emplea
para
completar su web corporativa, la cual esta realizada en php y MySQL. Lo
que
se hace ahora mismo es introducir los contenidos desde local en
FileMaker
(Base de datos) y expoprtar .csv para luego estos ficheros importarlos
en
mysql (phpmyadmin). La verdad no es un proceso muy costoso, pero tampoco
muy
elegante :-). Pero me gustaría saber si se os ocurre alguna forma mejor
de
hacerlo.

No sé, mis pensamientos van por crear una app Mac OS X programada en
Ruby
(para que sea más rapida que una app web) y con respaldo de un Mysql
(local)
y esto conectarlo de alguna forma con una app web alojada en un servidor
remoto (lo que vera la gente). La conexion entre local y remoto seria
ideal
que pudiera ser invisble para los encargados de aportar los contenidos.
Es
decir, elllos abren la app, igual que si abriesen el iTunes y rellenan
una
BBDD y esa información se graba en los dos sitios (local y remoto)

NOTA: Se introduce todo en local porque esta información tiene otros
usos a
parte de completar la web de la empresa.

Es un caso que me gustaría que me orientaéis. Aunque confieso que ahora
mismo no me creo con el nivel suficiente de Ruby como para
desarrollarlo,
pero si que me gustaría conocer vuestras ideas o si os habeis enfrentado
a
algo similar.

Gracias

Hola lista, siento ser pesado, pero el caso que expongo arriba me
interesa especialmente. No sé igual me he explicado mal o lo que estoy
preguntando es una burrada-tonteria. Basicamente la idea era construir
una especie de administrador de la web pero en local y transformado en
una App ruby-Mac OS X (que he oido que mac se lleva muy bien con este
lenguaje y en un libro que he comprado me lo pintan como una opcion
interesante. Ademas pienso que seria lo más comodo para los usuarios de
la empresa). Pero mi pregunta no es ¿como se hace una App Mac con ruby
(offtopic)?
Sino que trazaseis (a grandes rasgos) cual sería la mejor forma de
establecer una conexión-sicronización de datos entre una App local
(aunque sea web-rails) y una web (App remota). Es decir tener la info
actualizada en cualquier momento que el usuario la introduzca.

Espero que no sea algo muy raro (o mal pensado) lo que pregunto. Y si
ese es el caso me gustaría que alguien me lo digera.

Nota para Manuel:
No te preocupes por lo de mi insistencia. Si nadie me contesta, yo no
escribire más y el hilo se archivará. He insistido porque es una
cuestión que me interesaba ir pensando. Pero por mi parte y si nadie
tiene nada que decir, el hilo esta cerrado

Gracias y perdona si te estoy pareciendo muy pesado.

Un saludo

El día 23 de julio de 2008 1:56, Andrés Gutiérrez <
[email protected]> escribió:

Hola lista, siento ser pesado, pero el caso que expongo arriba me
interesa especialmente.

Hola Andrés,

Posiblemente no te he entendido bien. Quizá lo que estás buscando
resolver
primariamente es manejar ActiveRecord con un Legacy Schema. Si este es
el
caso, ActiveRecord tiene algunas opciones de configuración :

primary_key_prefix_type : Define el prefijo del primary key :

#config/environment.rb
ActiveRecord::Base.primary_key_prefix_type = :table_name

class Producto < ActiveRecord::Base
end
p = Producto.find(1)

“Select * from productos where productoid = 1”

Si la primary key contiene underscore :

#config/environment.rb
ActiveRecord::Base.primary_key_prefix_type = :table_name_with_underscore
class Producto < ActiveRecord::Base
end
p = Producto.find(1)

“Select * from productos where producto_id = 1”

Revisa en el API: table_name_prefix, table_name_suffix

Los métodos set_table_name y set_primary_key te permiten definir
explicitamente el nombre de la tabla para el modelo y el nombre de la
columna para la primary key :

class Producto < ActiveRecord::Base
set_table_name = “producto”
set_primary_key = “producto_id”
end

El atributo pluralize_table_names le dice a ActiveRecord que no
utilizará el
inflector para determinar el nombre de las tablas :

#config/environment.rb
ActiveRecord::Base.pluralize_table_names = false

class Producto < ActiveRecord::Base
end
p = Producto.find(1)

“Select * from producto where id = 1”

Dependiendo la forma en que realizes la conexión a esta base de datos
remota, te recomiendo que revises en la API:
ActiveRecord::Base.establish_connection.

PD: No veo mayor problema en que la aplicación local se desarrolle en
Rails,
si es en lo que te sientes más cómodo.

Suerte.
Un saludo

Primero, gracias por contestar a los dos. Voy primero con jaime y
despues
con fernando.
Jaime:
Entiende que tengo un nivel bajo de casi todo, y de rails tambien. Pero
es
cierto que cada vez me siento más comodo leyendo y aprendiendo sobre
RoR. Al
tema. Dos cosas
a) La primera parte de tu mail, lo de cambiar el nombre de la tabla y
el
campo de primary Key, no he entendido cual es el proposito. (recuerda,
tengo
un nivel bajo de RoR). Por lo que he leido cambiar estas cosas da más
problemas que otra cosa

b) lo segundo:

Dependiendo la forma en que realizes la conexión a esta base de datos
remota, te recomiendo que revises en la API:
ActiveRecord::Base.establish_connection.
parece lo que estoy buscando, gracias

Fernando:

Mi consejo es que si estás pensando en rehacer la aplicación local
entonces no tienes porque heredar el problema de las 2 bases de datos.

¿Por que? de todos modos es algo que habría que construir desde 0. Asi
que
heredar no heredo nada

Rehaz la aplicación local usando y ampliando la misma BD que usa ahora
mismo la aplicación php

¿Que use la BBDD de remoto para los dos? Hay cosas que se usan en local,
que
en remoto no se usan (en este caso)

Por otro lado me olvidaría de hacer una aplicación Desktop. La haría
web con todas sus ventajas e inconvenientes

¿Por que es major web y no desktop? Lo digo por aprender y sumar más
criterios a mis decisiones

Gracias a los dos por contestar.

El día 23 de julio de 2008 17:54, Fernando G.
[email protected]
escribió:

Hola Andrés,

Sino que trazaseis (a grandes rasgos) cual sería la mejor forma de
establecer una conexión-sicronización de datos entre una App local
(aunque sea web-rails) y una web (App remota). Es decir tener la info
actualizada en cualquier momento que el usuario la introduzca.

Mi consejo es que si estás pensando en rehacer la aplicación local
entonces no tienes porque heredar el problema de las 2 bases de datos.

Rehaz la aplicación local usando y ampliando la misma BD que usa ahora
mismo la aplicación php. De este modo pasarás a tener una sola BD y te
olvidarás del rollo de la sincronización y demás. Aunque si las 2
aplicaciones tienen un uso intensivo igual aparecen otros problemas de
concurrencia… puede ser.

Por otro lado me olvidaría de hacer una aplicación Desktop. La
haríaweb con todas sus ventajas e inconvenientes.

Suerte.
f.

El día 23 de julio de 2008 19:36, Andrés gutiérrez
[email protected]
escribió:> Primero, gracias por contestar a los dos. Voy primero con jaime y despues

con fernando.
Jaime:

Fernando:

Mi consejo es que si estás pensando en rehacer la aplicación local
entonces no tienes porque heredar el problema de las 2 bases de datos.

¿Por que? de todos modos es algo que habría que construir desde 0. Asi que
heredar no heredo nada

Por eso mismo. ¿Por qué entonces quieres usar 2 BDs y tener que
resolver todo el tema de la sincronización entre ellas?

Rehaz la aplicación local usando y ampliando la misma BD que usa ahora
mismo la aplicación php

¿Que use la BBDD de remoto para los dos? Hay cosas que se usan en local, que
en remoto no se usan (en este caso)

Da igual. Adapta la BD para que cubra las peculiaridades de cada
aplicación y haz que se comparta lo
común.
No digo que sea fácil, pero tampoco serías el primero :slight_smile:

Por otro lado me olvidaría de hacer una aplicación Desktop. La haría
web con todas sus ventajas e inconvenientes

¿Por que es major web y no desktop? Lo digo por aprender y sumar más
criterios a mis decisiones

Mi opinión es la del “martillo que todo lo que ve le parecen clavos”:
soy desarrollador web así que cualquier herramienta administrativa la
propongo desde el punto de vista web.

En cualquier caso, a mi entender la lista de virtudes de una
aplicación web es infinita y crece cada día. Como contras sólo tenemos
la lentitud de respuesta y el difícil acceso a los ficheros y
periféricos del ordenador local.

Como ventaja gorda propondría la deslocalización desde el punto de
vista de poder acceder a la herramienta: any-who/any-time/any-where

Y otra no menos importante: distribución eficaz y ágil de nuevas
versiones y parches.

Alguna razón (más) habrá detrás de que hasta aplicaciones tan pesadas
y aparentemente locales se estén migrando a servicios web
(¿GoogleDocs?).

Suerte
f.

Vale, me has convencido. De todas formas recalco que es un proyecto que
no
tengo intención de hacerlo ahora mismo. Pero muchas gracias.
Una vez que me tienes convencido… :slight_smile:

Una questión:
Tu solución es que construya una única app web, la cuelgue y los
empleados
comiencen a trabajar via navegador ¿no?

De todas formas me gustaría saber como (a grandes rasgos) cual sería la
manera correcta de mantener dos BBDD sincronizadas.

Un saludo

El día 23 de julio de 2008 22:16, Fernando G.
[email protected]
escribió:

Aunque solo he seguido un poco el hilo por encima te comento como lo
haría yo a la pregunta

De todas formas me gustaría saber como (a grandes rasgos) cual sería
la manera correcta de mantener dos BBDD sincronizadas.

Yo usaría Mysqldump, cron y una tarea (da igual el lenguaje, pero
bueno, mejor que sea ruby :slight_smile:

Entonces a grandes rasgos
quedaría así:1. cron ejecuta mysqldump que realiza las copias de las dos bases de
datos obteniendo el resultado en ficheros .SQL o .XML según se lo
hallas indicado.

  1. Luego se ejecuta la tarea que será la encargada de comparar los dos
    ficheros generados por Mysqldump y generar las querys necesarias para
    sincronizar las bases de datos.

¿Que te parece?

Otra opción es buscar un software que haga sincronizaciones de bases
de datos, pero no seria tan divertido :wink:

Espero te sea útil.
Un saludo.

¿Que te parece?
Gracias, como ya he dicho, y se que me repito, no controlo mucho, pero
por
lo que yo entiendo tiene buena pinta.

  1. Luego se ejecuta la tarea que será la encargada de comparar los dos
    ficheros generados por Mysqldump y generar las querys necesarias para
    sincronizar las bases de datos.

Una de las tareas de esta tarea :slight_smile: sería conectar local con remoto no?
¿eso
como se podría hacer?

El día 24 de julio de 2008 20:31, Alarkspur [email protected]
escribió: