Модуль InstanceMethods внутри ActiveSupport::Concern.. Предупреждение Устаревания

у меня есть сайт, портфолио, построенный в Sinatra. Я не работал над этим некоторое время, делал некоторые рельсы. Вчера я обновил список драгоценных камней, запустив "Gem update". Я не знаю, имеет ли это какое-то отношение к этому, но я снова начал работать на веб-сайте портфолио сегодня, и я получил некоторые предупреждения об осуждении.

предупреждение об устаревании: модуль InstanceMethods внутри ActiveSupport:: беспокойство больше не будет включаться автоматически. Просьба определить методы экземпляра непосредственно в работе. (звонили из включить at / Users/joris/Desktop/sinatra/портфолио/модели / работа.РБ:2)

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

файл, который он упоминает в ошибке, - это работа.rb:

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

    timestamps!
end

Это мой основной файл (портфель.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-файл моделей (который вызывает работу.файл 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'

EDIT: просто увидел, что я также получаю его за models/post.rb

предупреждение об устаревании: модуль InstanceMethods внутри ActiveSupport:: беспокойство больше не будет включаться автоматически. Вместо этого определите методы экземпляра непосредственно в Post. (звонили из включить в / Пользователи/joris/рабочий стол/Синатра/портфолио/модели / пост.РБ:2)

2 ответов


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

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

и активная поддержка говорит вам делать

module Blah
  extend ActiveSupport::Concern
  def foo
  end
end

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


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

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