2011-12-30 77 views
17

我有一个在Sinatra内建的投资组合网站。我有一段时间没有工作,一直在做一些Rails。我昨天通过运行'gem update'更新了我的宝石列表。我不知道这是否与此有关,但我今天再次开始在投资组合网站上工作,并收到了一些弃用警告。ActiveSupport中的InstanceMethods模块::关注..弃用警告

弃权警告: ActiveSupport :: Concern中的InstanceMethods模块将不再自动包含在内。 请直接在Work中定义实例方法。 (从 称为包括/Users/joris/Desktop/sinatra/portfolio/models/work.rb:2)

我不知道如何解决这一问题,当我运行应用程序它不工作了..去我的路线只是返回Sinatra 404页面。 (?另外,是不是的Rails的ActiveSupport一部分这是为什么在我的末日应用上来了..)

在错误中提到的文件是work.rb:

class Work 
    include MongoMapper::Document 
    key :title, String 
    key :url, String 
    key :filename, String 
    key :file, String 
    key :description, String 

    timestamps! 
end 

这是我的主文件(portfolio.rb):

require "sinatra" 
require 'twitter' 
require 'RedCloth' 
require 'html_truncator' 
require 'digest/md5' 

class Portfolio < Sinatra::Application 

    require_relative 'config/init' 
    require_relative 'helpers/init' 
    require_relative 'models/init' 
    require_relative 'routes/init' 

该机型的init文件(该文件调用work.rb文件)具有以下内容:

require 'mongo_mapper' 

MongoMapper.connection = Mongo::Connection.new('lalaland.com', 10070) 
MongoMapper.database = 'hello' 
MongoMapper.database.authenticate('lalala', 'hello') 

require_relative 'post' 
require_relative 'work' 

编辑:刚才看到我也越来越它models/post.rb

弃用警告:InstanceMethods模块内部 的ActiveSupport ::关注将自动不再包括在内。 请直接在Post中定义实例方法。 (从 称为包括/Users/joris/Desktop/sinatra/portfolio/models/post.rb:2)

回答

41

某处在您的应用程序(或它的依赖),你在做

module Blah 
    extend ActiveSupport::Concern 
    module InstanceMethods 
    def foo 
    end 
    end 
    ... 
end 

和积极支持是告诉你做

module Blah 
    extend ActiveSupport::Concern 
    def foo 
    end 
end 

你是正确的,有效的支持Rails的一部分,但是像活动记录它也可以在没有护栏的其余部分使用。蒙戈映射器使用它,例如,在粗略地看一眼它使用过时InstanceMethods成语一堆的地方

+0

我没那么做。然而,它(我的模型)上的错误代码包括MongoMapper :: Document。它可能是MongoMapper中的一个'bug'吗?感谢您的回复:) – cabaret 2011-12-30 23:17:57

+0

Mongo映射器似乎使用新近弃用的表单。 – 2011-12-30 23:30:01

+0

我删除了所有对mongo_mapper的引用,并且现在加载了我的页面。猜猜我必须等待更新或寻找替代品。谢谢:) – cabaret 2011-12-30 23:55:41