Plugins de estilo Rails 2.3 y advertencias de obsolescencia ejecutando tarea en Heroku
Estoy actualizando a Rails 3.2, y ejecutar rake db: migrate me da varios errores de la forma:
ADVERTENCIA DE OBSOLESCENCIA: ¡Tiene plugins de estilo Rails 2.3 en vendor / plugins! El soporte para estos plugins se eliminará en Rails 4.0. Sacarlos y unirlos en tu Gemfile, o doblar en su aplicación como lib/myplugin/* y config/inicializadores/myplugin.rb. Consulte las notas de la versión para obtener más información al respecto: http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released . (llamado desde at /app/Rakefile:7)
Lo que es desconcertante es que mi directorio vendor/plugins
está vacío? ¿hay otro directorio de plugins al que esté haciendo referencia?
8 answers
¿Estás usando Heroku?
Heroku inyectará plugins en Rails 3.x aplicaciones .. Para evitar esto inyección en Rails 3, incluya la gema rails_12factor en su aplicación. (Soporte de Rubí Heroku 2013-10-26)
La gema rails_12factor también es necesaria en rails 4.
Si esta gema no está presente en su solicitud, recibirá un advertencia durante la implementación, y sus activos y registros no serán funcional. (Carriles 4 en Heroku 2013-10-26)
En fecha tan reciente como 2013-08, heroku siempre inyectó plugins en las aplicaciones de rails 3, incluso aplicaciones con las gemas recomendadas. Este fue un problema con ruby buildpack, y fue solucionado por PR 11 , fusionado el 2013-08-06.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-27 03:57:10
Puedes probar
::ActiveSupport::Deprecation.silenced = true
En su production.rb
ya que es solo ruido.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-02-26 20:56:22
En config/environment.po add:
ActiveSupport::Deprecation.silenced = true
Antes de inicializar rails, así:
# Load the rails application
require File.expand_path('../application', __FILE__)
ActiveSupport::Deprecation.silenced = true
# Initialize the rails application
MyApp::Application.initialize!
De manera similar a deshabilitar las advertencias en las tareas de rake, inserte la configuración de silenciamiento cerca de la parte superior de su Rakefile:
# Load the rails application
require File.expand_path('../application', __FILE__)
ActiveSupport::Deprecation.silenced = true
# Initialize the rails application
MyApp::Application.initialize!
Opcionalmente puede envolver esto en un bloque para solo silenciar en producción:
if ENV['RAILS_ENV'] == "production"
ActiveSupport::Deprecation.silenced = true
end
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-02-01 20:09:33
El mejor enfoque que he encontrado está documentado aquí. Esto es asumiendo que buscaste y encontraste esta pregunta porque tienes plugins de estilo antiguo.
Fui con la parte Que no sea una gema en absoluto, porque necesitaba poder activar/desactivar los complementos durante mi implementación de capistrano, en función del tipo de aplicación que estaba implementando. Antes de usar config.plugins para especificar qué plugin utilizar. Con este enfoque estoy utilizando un "requerir" en config.before_configuration en su lugar.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-23 23:03:37
Simplemente coloque el siguiente parche de 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 requerirlo en config/application.rb
justo después de requerir Rails:
require 'rails/all'
require File.expand_path('../../lib/silence_heroku_warnings', __FILE__)
Todas las obsoletas de 2.los plugins de estilo x deben ser silenciados. Aparecerán otras obsoletas.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-05-08 12:35:02
Una forma más limpia que simplemente silenciar las advertencias, esto es lo que puede hacer.
Para la inyección del registrador puede intentar usar la nueva gema de Heroku que Jared Beck mencionó en su respuesta anterior.
Lo que hicimos en su lugar es esto:
Puedes inhibir a Heroku de inyectar sus propios plugins si tienes un directorio con el mismo nombre en tu carpeta vendor/plugins
. La carpeta solo tiene que existir. Heroku entonces no inyectará su plugin, y si no hay código, Rails no objetará con advertencias de obsolescencia. Acabamos de poner un archivo readme explicando esto en:
vendor/plugins/rails_log_stdout/readme.md
El propósito del complemento inyectado de Heroku para el registro es activar el registro al estilo Heroku (requiere que los registros se envíen a STDOUT, no a un archivo). Para recuperarlo, hicimos lo que describí en esta respuesta . Se necesitaban ajustes en los comportamientos predeterminados de Heroku para Unicornio de todos modos, así que tenemos dos pájaros de un tiro.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:25:26
La nueva forma de silenciar los avisos de obsolescencia es:
config.active_support.deprecation = :silence
En su archivo config/environments/production.rb
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-10-20 04:19:45
Parece que Heroku finalmente ha abordado esto.
Injecting plugin 'rails_log_stdout'
Injecting plugin 'rails3_serve_static_assets'
Add 'rails_12factor' gem to your Gemfile to skip plugin injection
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-08-29 18:46:49