为了账号安全,请及时绑定邮箱和手机立即绑定

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

/ 猿问

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

慕莱坞森 2019-11-11 14:41:25

我正在升级到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目录是空的-是否有另一个正在引用的插件目录?


查看完整描述

3 回答

?
HUX布斯

您在使用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应用程序中插入插件,即使是带有推荐gem的应用程序也是如此。这是ruby buildpack的问题,由PR 11修复,于2013-08-06合并。


查看完整回答
反对 回复 2019-11-11
?
ABOUTYOU

在config / environment.rb中添加:


ActiveSupport::Deprecation.silenced = true 

在初始化rails之前,像这样:


# Load the rails application                                                                                                                                             

require File.expand_path('../application', __FILE__)


ActiveSupport::Deprecation.silenced = true                                                                                                                               


# Initialize the rails application                                                                                                                                       

MyApp::Application.initialize!

同样,要在rake任务中禁用警告,请在Rakefile顶部附近插入沉默配置:


# Load the rails application                                                                                                                                             

require File.expand_path('../application', __FILE__)


ActiveSupport::Deprecation.silenced = true                                                                                                                           


# Initialize the rails application                                                                                                                                       

MyApp::Application.initialize!

您可以选择将其包装在一个块中,以仅在生产中保持沉默:


if ENV['RAILS_ENV'] == "production"

  ActiveSupport::Deprecation.silenced = true

end


查看完整回答
反对 回复 2019-11-11
?
qq_笑_17

只需将以下猴子补丁放入 /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

并config/application.rb在需要Rails之后立即要求它:


require 'rails/all'

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

对来自2.x样式插件的所有弃用均应保持沉默。其他弃用将出现。


查看完整回答
反对 回复 2019-11-11
  • 3 回答
  • 0 关注
  • 48 浏览
我要回答

相关问题推荐

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信