146 votos

Rieles 2,3-estilo plugins y descarte advertencias ejecutando tareas en Heroku

Estoy actualizando a Rails 3.2 y ejecución de rake db:migrate me da varios errores de la forma:

Mismo mensaje de ADVERTENCIA: Usted tiene Rails 2.3 estilo de los plugins en vendor/plugins! Apoyo para estos complementos serán removidos en los Rieles 4.0. Sacarlos y unirlos en su Gemfile, o retirarse en su aplicación como lib/myplugin/* configuración y/inicializadores/myplugin.rb. Consulte las notas de versión para obtener más información sobre esto: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released. (llamado a partir de en /app/Rakefile:7)

Lo que es desconcertante es que mi vendor/plugins directorio está vacío-hay otro directorio de plugins que es referencia?

199voto

Jared Beck Puntos 4975

Estás usando Heroku?

Heroku inyectará plugins en Rails 3.x aplicaciones .. Para evitar este inyección en Rails 3, incluye el rails_12factor joya en su aplicación. (Heroku Ruby Apoyo 2013-10-26)

El rails_12factor joya es también necesario en rails 4.

Si esta joya no está presente en su solicitud, usted recibirá un advertencia durante la implementación, y sus activos y registros de no ser funcional. (Rails 4 en Heroku 2013-10-26)

Tan recientemente como 2013-08, heroku siempre se inyecta plugins en rails 3 aplicaciones, incluso las aplicaciones con las recomendadas gemas. Este era un problema con el rubí buildpack, y se fija por la RP 11, que se fusionaron en 2013-08-06.

12voto

kain Puntos 3282

Puedes probar

::ActiveSupport::Deprecation.silenced = true

en su production.rb ya que es sólo ruido.

6voto

Michael Hale Puntos 655

en línea Agregue:

ActiveSupport::Deprecation.silenced = true 

antes de inicializar los rieles, así:

# Load the rails application                                                                                                                                             
require File.expand_path('../application', __FILE__)

ActiveSupport::Deprecation.silenced = true                                                                                                                               

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!

Del mismo modo para deshabilitar las advertencias de rastrillo tareas Insertar el silenciamiento config cerca de la parte superior de tu Rakefile:

# Load the rails application                                                                                                                                             
require File.expand_path('../application', __FILE__)

ActiveSupport::Deprecation.silenced = true                                                                                                                           

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!

Opcionalmente puedes envolver esto en un bloque sólo silencio en producción:

if ENV['RAILS_ENV'] == "production"
  ActiveSupport::Deprecation.silenced = true
end

4voto

yuяi Puntos 729

El mejor método que he encontrado está documentado aquí. Esto es suponiendo que usted buscó y encontró esta pregunta porque usted ¿ tiene el viejo estilo de los plugins.

Me fui con el Hacer no es una joya en todo en parte, porque tenía que ser capaz de activar los plugins de encendido/apagado durante mi capistrano implementación, basado en lo que el sabor de la aplicación que se vaya a implementar. Antes de utilizar config.plugins para especificar qué plugin a utilizar. Con este enfoque el que estoy usando un "exigir" en config.before_configuration lugar.

1voto

skalee Puntos 3227

Solo poner siguiente parche mono en/lib/silence_heroku_warnings.rb

module Rails
  class Plugin < Engine

    alias :not_silenced_initialize :initialize

    def initialize(root)
      ActiveSupport::Deprecation.silence{ self.send :not_silenced_initialize, root }
    end

  end
end

y lo requieren en config/application.rb justo después de que requieren los carriles:

require 'rails/all'
require File.expand_path('../../lib/silence_heroku_warnings', __FILE__)

Todos deprecations de estilo 2.x plugins deben ser silenciadas. Otros deprecations se mostrarán.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X