Модуль InstanceMethods внутри ActiveSupport :: Concern .. Предупреждение об устаревании - PullRequest
17 голосов
/ 31 декабря 2011

У меня есть сайт-портфолио, созданный в Синатре. Я не работал над этим некоторое время, занимался некоторыми Rails. Вчера я обновил свой список драгоценных камней, выполнив команду «Обновление драгоценных камней». Я не знаю, имеет ли это какое-либо отношение к этому, но сегодня я снова начал работать над сайтом портфолио и получаю некоторые предупреждения об устаревании.

ПРЕДУПРЕЖДЕНИЕ О УСТАРЕВАНИИ: Модуль InstanceMethods внутри ActiveSupport :: Concern больше не будет включаться автоматически. Пожалуйста, определите методы экземпляра непосредственно в Work. (вызывается из включить в /Users/joris/Desktop/sinatra/portfolio/models/work.rb:2)

Я не уверен, как это исправить, и когда я запускаю приложение, оно больше не работает ... переход на мои маршруты просто возвращает страницу Sinatra 404. (Кроме того, ActiveSupport не является частью Rails? Почему это происходит в моем приложении Sinatra ..)

Файл, который упоминается в сообщении об ошибке, является 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'

Файл инициализации модели (который вызывает файл 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 :: Concern больше не будет включаться автоматически. Пожалуйста, определите методы экземпляра непосредственно в Post. (вызывается из включить в /Users/joris/Desktop/sinatra/portfolio/models/post.rb:2)

Ответы [ 2 ]

41 голосов
/ 31 декабря 2011

Где-то в вашем приложении (или его зависимостях) вы делаете

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

и Active Support предлагает вам

module Blah
  extend ActiveSupport::Concern
  def foo
  end
end

Вы правы, что Active Support является частью Rails, но, как и Active Record, ее можно использовать и без остальной части Rails. Монго маппер использует его, например, и на беглый взгляд он использует устаревшую InstanceMethods идиому в кучу мест

3 голосов
/ 22 января 2012

Похоже, что это было исправлено ранее в этом месяце в геме mongo_mapper, поэтому я ожидаю, что исправление сделает это в следующем выпуске:

https://github.com/jnunemaker/mongomapper/commit/d2333d944ce6ae59ecab3c45e25bbed261f8180e

...