Что делать с поставщиком / плагинами после обновления до rails 3.2.1

После обновления до rails3.2.1 появляется следующее предупреждение:

У вас есть плагины в стиле Rails 2.3 в vendor / plugins! Поддержка этих плагинов будет удалена в Rails 4.0. Выдвиньте их и объедините в свой Gemfile или сложите в свое приложение как lib / myplugin / * и config / initializers / myplugin.rb. Подробнее см. В примечаниях к выпуску: http://weblog.rubyonrails.org/2012/1/4/rails-3-2-0-rc2-has-been-released

Я перемещаю свои плагины в каталоге vendor / plugins, но я не знаю, как писать файл config / initializers / myplugin.rb, и Google не может найти ответ.

28
задан Vijay Dev 1 April 2012 в 18:11
поделиться

1 ответ

Я только что прошел через это и обнаружил, что вам просто нужно пройти через каждый плагин, чтобы проверить несколько вещей:

  • Это драгоценный камень на рубиновых камнях? Если это так, просто вставьте его в свой Gemfile и удалите из vendor/plugins
  • Если драгоценный камень недоступен или камень старый, возьмите папку в vendor/plugins и переместите ее в lib/plugins

Одна вещь, с которой я столкнулся, заключается в том, что вам необходимо вручную установить все эти плагины. Вот инициализатор, который я создал и поместил в config/initializers/plugins.rb:

Dir[Rails.root.join('lib', 'plugins', '*')].each do |plugin|
  next if File.basename(plugin) == 'initializers'

  lib = File.join(plugin, 'lib')
  $LOAD_PATH.unshift lib

  begin
    require File.join(plugin, 'init.rb')
  rescue LoadError
    begin
      require File.join(lib, File.basename(plugin) + '.rb')
    rescue LoadError
      require File.join(lib, File.basename(plugin).underscore + '.rb')
    end
  end

  initializer = File.join(File.dirname(plugin), 'initializers', File.basename(plugin) + '.rb')
  require initializer if File.exists?(initializer)
end

У меня также была проблема инициализаторов, в которых я нуждался для некоторых плагинов, поэтому я переместил эти конкретные инициализаторы в папку lib/plugins/initializers. Вы должны назвать им имя плагина, поэтому инициализатор для плагина my_plugin должен быть в файле lib/plugins/initializers/my_plugin.rb

Надеюсь, это поможет!

8
ответ дан 28 November 2019 в 03:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: