2014-10-13 3 views
2

Я пытаюсь добавить задачу установки к моему монтируемому движку units.Rails engine не загружает файлы приложений при посеве db

Задача нагрузка семена, так и внутри него очищает некоторые таблицы:

# lib/tasks/units_tasks.rake 
namespace :units 
    task :install do 
    Units::Engine.load_seed 
    end 
end 

# db/seeds.rb 
Units::Item.delete_all 
... 

Когда я называю задачу из командной строки

$ bundle exec rake units:install 
# => NameError: uninitialized constant Units::Item 

двигателя требуется, как обычно (и сам драгоценный камень отлично работает со всеми его зависимостями , за исключением приведенного выше случая).

# lib/units.rb 
require 'units/engine' 
module Units 
end 

# lib/units/engine.rb 
module Units 
    class Engine < ::Rails::Engine 
    isolate_namespace Units 
    end 
end 

Очевидно, что он загружается без файлов, которые должны быть загружены. Но почему?

ответ

1

В вашем методе семян, вам нужно будет

require_relative '../lib/units' 

или потенциально

require_relative '../lib/units/engine' 

Тогда вы должны быть в состоянии пространства имен, как вы были ранее.

Я считаю, что это имеет какое-то отношение к потоковому характеру рельсов, но более техническая причина вне меня.