Модуль 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