Я пытаюсь написать модуль для существующего приложения rails (decidim), используя TDD.Когда я запускаю рабочий код с помощью rails runner, проблем нет:
decidim@elektori:~/elovalasztok$ rails runner lib/decidim/condorcet.rb
decidim@elektori:~/elovalasztok$
Когда я запускаю с rspec, отсутствует зависимость:
decidim@elektori:~/elovalasztok$ rspec
An error occurred while loading ./spec/condorcet_spec.rb.
Failure/Error: isolate_namespace Decidim::Condorcet::Admin
NameError:
uninitialized constant Rails::Engine::ActionDispatch
# ./lib/decidim/condorcet/admin_engine.rb:5:in `<class:AdminEngine>'
# ./lib/decidim/condorcet/admin_engine.rb:4:in `<module:Condorcet>'
# ./lib/decidim/condorcet/admin_engine.rb:3:in `<module:Decidim>'
# ./lib/decidim/condorcet/admin_engine.rb:2:in `<top (required)>'
# ./lib/decidim/condorcet.rb:2:in `<top (required)>'
# ./spec/condorcet_spec.rb:1:in `<top (required)>'
Finished in 0.00041 seconds (files took 1.39 seconds to load)
0 examples, 0 failures, 1 error occurred outside of examples
decidim@elektori:~/elovalasztok$
Первая строка спецификацииФайл, который вызывает проблему, выглядит следующим образом:
require 'decidim/condorcet'
Соответствующие файлы:
decidim@elektori:~/elovalasztok$ cat lib/decidim/condorcet.rb
require "decidim/condorcet/admin"
require "decidim/condorcet/admin_engine"
module Decidim
module Condorcet
include ActiveSupport::Configurable
end
end
decidim@elektori:~/elovalasztok$ cat lib/decidim/condorcet/admin_engine.rb
require 'rails/engine'
module Decidim
module Condorcet
class AdminEngine < ::Rails::Engine
isolate_namespace Decidim::Condorcet::Admin
end
end
end
Я даже не уверен, что строка require 'rails/engine'
должна быть в condorcet.rbили какое-то другое место.И я не мог понять, что требуется, чтобы покрыть Rails::Engine::ActionDispatch
.
Где я должен объявить свои зависимости, и что такое для Rails::Engine::ActionDispatch
?