Ответ 1
Я просто написал сообщение в блоге об этом: Как конвертировать простые рельсы 2.3 Плагины стиля для Rails 3.2
После обновления до rails3.2.1 это предупреждение происходит:
У вас есть плагины с поддержкой Rails 2.3 в поставщиках/плагинах! Поддержка этих плагинов будет удалена в 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 не может найти ответ.
Я просто написал сообщение в блоге об этом: Как конвертировать простые рельсы 2.3 Плагины стиля для Rails 3.2
Я только что прошел через это и обнаружил, что вам просто нужно пройти через каждый плагин, чтобы проверить несколько вещей:
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
Надеюсь, это поможет!
оба других ответа хороши и, похоже, работают.
Однако, если ваш плагин состоит из одного файла .rb в разделе vendor/plugins/.../lib, а поставщик/плагины/.../init.rb - это просто
require 'pluginname'
Затем вы можете просто скопировать один файл в ваш каталог lib и добавить файл в config/initializers, который требует "yourpluginname"
Вот конкретный пример использования плагина act_as_rated, который еще не является драгоценным камнем.
создайте файл config/initializers/actions_as_rated.rb со следующим...
требуется "act_as_rated"
удалить поставщика/плагины/act_as_rated
Никто не упомянул о конвертации в Railthie или Rails:: Engine.
Просто переместите все ваши рубиновые файлы в драгоценный камень [используйте жгут для сборки, чтобы создать его для минимального трения].
Затем взгляните на документы Railtie [и найдите свою целевую версию Rails]:
https://apidock.com/rails/v3.2.13/Rails/Railtie
Очень легко просто преобразовать старый плагин init.rb в railtie таким образом, и он дает вам путь к Rails 4 +.
Получите просмотры или контроллеры?, а затем используйте Rails:: Engine. Хотя двигатели в драгоценных камнях могут быть сложными с точки зрения рабочего процесса, преобразование плагина в один из них довольно тривиально.
Сделайте себе одолжение и начните строить тесты прямо в драгоценном камне, а не в проекте Rails.