2011-07-20 17 views
5

Tengo dos aplicaciones Rails (usando rails 3.0.7), llámalas "blog" y "auth". Me gustaría montar "auth" desde "blog" para que pueda ejecutar la aplicación "blog" y hacer que determinadas solicitudes se dirijan a la aplicación "auth".¿Cómo incrustar/montar la aplicación Rails existente en otra aplicación de Rails?

Parece que necesito insertar o quizás crear un "motor", pero no estoy 100% seguro de cuál es la correcta.

¿Cómo puedo insertar la aplicación "auth" dentro de la aplicación "blog"?

+2

creación de un motor es la manera de proceder. – apneadiving

Respuesta

0

Si la aplicación de autenticación es algo así como un servicio web (por ejemplo, autenticación de Facebook), solo tiene que ejecutar 2 aplicaciones y realizar solicitudes desde una aplicación con direcciones URL a otra aplicación.

Si estas aplicaciones comparten cierta lógica o la misma base de datos, puede fusionar el código, para que dos aplicaciones se conviertan en una, o puede hacer de la aplicación 'auth' algo así como una gema o un complemento y usarlo en su 'blog 'app.

+0

"solo mantenga 2 aplicaciones en ejecución y realice solicitudes desde una aplicación con direcciones URL a otra aplicación". Entonces, ¿el cliente hace solicitudes a la otra aplicación? El plan inicial era hacer que el lado del cliente de la aplicación "blog" realizara solicitudes a la aplicación "auth" (usando ajax) pero eso requeriría el uso de JSONP que solo permite GET. Algunos de los servicios a los que necesito acceder requieren POST, DELETE, PUT, etc. – codecraig

+0

si desea llamar a una aplicación de rieles a otro recurso activo de uso. http://railscasts.com/episodes/94-activeresource-basics – lukemh

1

Rails3 es una aplicación basada en rack. Rackmiddleware ya tiene un número predeterminado de aplicaciones integradas. Intente ejecutar bundle exec rake middleware. Puede agregar aplicaciones Rack personalizadas en la pila. Use this blogpost para ver cómo funciona.

+0

He visto esa publicación pero me pregunto, ¿cómo podría hacer que mi aplicación "blog" requiera la aplicación "auth"? No es que la aplicación de "auth" rails sea una joya que puedo agregar al Gemfile en mi aplicación "blog". – codecraig

+0

No entiendo, ¿necesita agregar autenticación en su aplicación? – Anatoly

+0

Tengo una aplicación de rieles, llamada 'auth', que proporciona autenticación. Me gustaría que el código del cliente de mi aplicación de rieles "blog" GET/POST, etc., en la aplicación "auth". No puedo hacer esto directamente desde el código JavaScript en el cliente 'blog' de JSONP (solo el trabajo de GET). Quiero montar esencialmente la aplicación "auth" en/desde la aplicación "blog" para poder acceder a la autenticación. cosas del código del lado del cliente. ¿Tiene sentido? En este momento, creo que mi principal problema es, ¿cómo puedo obtener la aplicación "auth" montada por la aplicación "blog"? No puedo simplemente montar como esa publicación de blog sugiere b/c la aplicación de autenticación no está en la ruta de carga de la aplicación de blog. – codecraig

2

Rails subía RuntimeError: You cannot have more than one Rails::Application si intentaba tener dos aplicaciones de Rails definidas en una instancia de Ruby, pero ha cambiado después de this commit.

Aún no publicado en 4.0.0, pero se incluirá en las versiones más recientes. (> 4.1.0.beta)

Consulte the discussion on PR para obtener más información.


Según tengo entendido, es probable que no necesite tener dos aplicaciones de Rails. Probablemente debería intentar extraer la funcionalidad que necesita en el Rails::Engine.

Remember, Rails::Application is also a Rails::Engine.

puede encontrar una gran cantidad de material sobre cómo hacerlo en la web, y recomendaría thesetwo para empezar.

2

Puede crear "carriles-motor" para la aplicación 'auth', y luego montar este motor en la aplicación de rieles, es decir, la aplicación 'blog'.

Leer más sobre rieles :: motor por debajo de enlaces -

http://guides.rubyonrails.org/engines.html

http://api.rubyonrails.org/classes/Rails/Engine.html

Para incrustar un motor montable en rieles en una aplicación Rails, siga estos pasos generales -

1) Abra el proyecto Rails objetivo, donde debe incrustarse un motor.

2) Abra el archivo Gemfile, y añadir la siguiente línea:

gem '<engine name>', :path => "<absolute path to the Rails mountable engine project>" 

3) abierto para la edición de config/rutas.rb, y agregue la línea siguiente:

mount <engine name>::Engine, :at => "/<engine name>" 
Cuestiones relacionadas