2011-12-30 66 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