在Heroku中运行Rails 2.3样式插件和弃用警告运行任务

fea*_*ool 155 ruby-on-rails heroku ruby-on-rails-plugins

我正在升级到Rails 3.2,运行rake db:migrate会给我带来几个错误:

弃用警告:您在供应商/插件中拥有Rails 2.3风格的插件!在Rails 4.0中将删除对这些插件的支持.移出它们并将它们捆绑在Gemfile中,或者将它们作为lib/myplugin/*和config/initializers/myplugin.rb折叠到您的应用程序中.有关详细信息,请参阅发行说明:http://weblog.rubyonrails.org/2012/01/04/rails-3-2-0-rc2-has-been-released.(从/ app/Rakefile调用:7)

令人困惑的是我的vendor/plugins目录是空的 - 是否有另一个引用的插件目录?

Jar*_*eck 203

你在用Heroku吗?

Heroku将在Rails 3.x应用程序中注入插件.为了避免在Rails 3中注入,请在应用程序中包含rails_12factor gem.(Heroku Ruby支持 2013-10-26)

rails 4中还需要rails_12factor gem.

如果您的应用程序中没有此gem,您将在部署时收到警告,并且您的资产和日志将无法正常运行.(Heroku上的Rails 4 2013-10-26)

就在2013-08赛季,heroku总是在rails 3应用程序中注入插件,甚至包含推荐宝石的应用程序.这是ruby buildpack的一个问题,由PR 11修复,于2013-08-06合并.

  • 一年后......没有改变heroku. (3认同)
  • 我尝试添加一个初始化程序https://gist.github.com/1709421,但它不起作用(我猜插件比app初始化程序更早加载).我的建议是不要担心......它只是噪音. (2认同)

kai*_*ain 12

你可以试试

::ActiveSupport::Deprecation.silenced = true
Run Code Online (Sandbox Code Playgroud)

在你的production.rb,因为它只是噪音.

  • 抑制此警告的一个方法是将以下内容添加到application.rb:`ActiveSupport :: Deprecation.behavior = Proc.new {| msg,stack | $ stderr.puts msg除非msg =〜/你有Rails 2.3风格的插件/}` (6认同)
  • 理想情况下,人们只能抑制这种特殊的警告,你知道这是否可能? (5认同)
  • 不要压制对我的警告 (2认同)

Mic*_*ale 8

在config/environment.rb中添加:

ActiveSupport::Deprecation.silenced = true 
Run Code Online (Sandbox Code Playgroud)

在初始化rails之前,如下所示:

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

ActiveSupport::Deprecation.silenced = true                                                                                                                               

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!
Run Code Online (Sandbox Code Playgroud)

与在rake任务中禁用警告类似,在Rakefile顶部附近插入静默配置:

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

ActiveSupport::Deprecation.silenced = true                                                                                                                           

# Initialize the rails application                                                                                                                                       
MyApp::Application.initialize!
Run Code Online (Sandbox Code Playgroud)

您可以选择将其包装在块中以仅在生产中静音:

if ENV['RAILS_ENV'] == "production"
  ActiveSupport::Deprecation.silenced = true
end
Run Code Online (Sandbox Code Playgroud)