rspec + rails_admin при тестировании пользовательского действия rails_admin в / lib выдает ошибку - PullRequest
0 голосов
/ 27 сентября 2018

Мой rspec тест выполнялся нормально, прежде чем я создал пользовательское действие rails_admin в папке lib.

Настраиваемое действие для создания панели мониторинга выглядит следующим образом: /lib/rails_admin.rb

module RailsAdmin
  module Config
    module Actions
      class Dashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :root? do
          true
        end
      end
    end
  end
end

Это дает желаемые результаты, т. Е. Новая панель мониторинга.Но теперь, когда я запускаю тест rspec (любой тест), он выдает следующую ошибку:

Bundler :: GemRequireError:

Произошла ошибка при попытке загрузить гем 'rails_admin'.

Ошибка загрузки Gem: неинициализированная константа RailsAdmin :: Config :: Actions :: Base

Перед запуском любого теста rspec загружает все файлы из папки lib, но не может найти RailsAdmin дляпо какой-то причине.

Чтобы избавиться от ошибки, я попытался вручную включить файлы rails_admin

require 'rails_admin/config/actions'
require 'rails_admin/config/actions/base'
module RailsAdmin
  module Config
    module Actions
      class Dashboard < RailsAdmin::Config::Actions::Base
        RailsAdmin::Config::Actions.register(self)

        register_instance_option :root? do
          true
        end
      end
    end
  end
end

Это не решает проблему, просто перемещает ошибку на следующий уровень и выдает следующую ошибку:

Ошибка / Ошибка: требуется File.expand_path ('../../ config / environment', FILE )

NoMethodError: неопределенный метод config' for RailsAdmin:Module ./config/initializers/rails_admin.rb:1:in '

Где rails_admin.rb Первая строка просто:

RailsAdmin.config do |config|

Почему rspec не может правильно загрузить гем rails_admin?

1 Ответ

0 голосов
/ 18 мая 2019

Хотя я понятия не имею, почему это работает, я нашел рабочее решение:

вместо lib/rails_admin.rb, я создал подпапку config и подпапку actions, затем поместилмой rails_admin.rb файл внутри.

Я получил следующее дерево: lib/config/actions/rails_admin.rb.Вам также необходимо изменить путь к этому файлу в вашем config/initializers/rails_admin.rb:

В моем случае у меня было require Rails.root.join('lib', 'rails_admin.rb') и я изменил его на require Rails.root.join('lib', 'config', 'actions', 'rails_admin.rb').

Затем для запуска bundle exec rspecработает как положено.

...