5

Estoy actualizando Ruby on Rails de 3.1 a 3.2.2 y me gustaría saber qué debo hacer y en lo que debería tener cuidado para mover correctamente mi complemento de proveedor (nota: no es un joya, y en este momento no estoy planeando hacer que una joya) desde el directorio /vendor a /lib, así como escribió en el official documentation:Actualización a Rails 3.2.2: ¿Cómo mover correctamente mi complemento desde el directorio '/ vendor' a '/ lib'?

Rails 3.2 deprecates vendedor/plugins y Rails 4.0 se eliminarán por completo. Puede comenzar a reemplazar estos complementos extrayéndolos como gemas y agregándolos en su Gemfile. Si elige no convertirlos en gemas, puede moverlos a, por ejemplo, lib/my_plugin/* y agregar un inicializador apropiado en config/initializers/my_plugin.rb.

Me refiero sobre todo a la "un inicializador apropiada en config/inicializadores/my_plugin.rb": ¿Qué código debo poner en ese archivo?

Más: ¿Tiene algún consejo o alerta sobre la realización del proceso anterior?

Respuesta

1

El inicializador debe contener los requisitos apropiados y otras tareas relacionadas con el inicio que son necesarias para que su complemento funcione correctamente. Es difícil ayudarlo sin ejemplos de código real de su aplicación, pero este enlace debería ayudarlo a comenzar.

http://code.coneybeare.net/how-to-convert-simple-rails-23-style-plugins

El ejemplo en el enlace requiere el plugin (ahora en el directorio lib) y añade un módulo a ActiveRecord::Base.

+0

Mi complemento es muy simple y debería funcionar si sigo las instrucciones en la publicación de blog vinculada. Además, mi complemento tiene la misma estructura de sistema de archivos del complemento en la publicación. Sin embargo, tengo un problema en el paso * 6 * cuando debe usar la instrucción 'require': si en mi archivo' config/initializers/plg_name.rb' utilizo 'require File.dirname (__ FILE__) + '/ lib/plg_name '' no funciona y recibo el error de Phusion Passenger 'no se carga ese archivo -//config/initializers/lib/plg_name'. – user502052

+0

También traté de usar 'require File.dirname (__ FILE__) + '/ lib/plg_name/plg_name'' y' require File.dirname (__ FILE__) +'/lib/plg_name/plg_name.rb'', pero el problema aún persiste – user502052

+0

El error '/ /config/initializers/lib/plg_name' le dice que no hay un archivo allí y que es correcto. Debería poder usar 'require 'plg_name/plg_name'' porque Rails buscará en el directorio lib. – James

Cuestiones relacionadas