2014-11-05 6 views
0

Так основная проблема в сердце здесь является следующее сообщение:Использование библиотек в Rails (4.1.x) Двигатели?

`<class:ApplicationController>': uninitialized constant Xaaron::Core (NameError) 

Так что я думаю, что некоторые из шагов, которые я сделал будет излишним, но я новичок в попытке добавить код на папку библиотеки в двигатель рельсов, в рельсах его довольно легко. Но здесь его не так много.

Так вот что я сделал:

в:

xaaron/ 
    lib/ 
    xaaron/ 

У меня есть каталог с именем core/ с файлом под названием loder.rb.

Внутри ядра каталог под названием controllers и в стороне есть файл с именем user_controller, который выглядит следующим образом:

module Xaaron 
    module Core 
    module UserController 
     def assign_to_member_group(user) 
     memeber = Xaron::Group.find('member') 
     user.add_group = memeber.group_name 
     end 
    end 
    end 
end 

Для загрузки этого у меня есть загрузчик файла:

module Xaaron 
    module Core 
    module Loader 
     include Xaaron::Core::Controllers::UserController 
    end 
    end 
end 

Что я Не думаю, что это необходимо, потому что в файле engine.rb я делаю: config.autoload_paths << File.expand_path("../xaaron/core/**", __FILE__), который просто идет вверх по одному каталогу в каталог lib/ и загружает xaaron/core/и все в нем (или так я думал).

Этот loader.rb файл включен в ApplicationController

module Xaaron 
    class ApplicationController < ActionController::Base 
    ... 

    include Xaaron::Core::Loader 
    ... 
    end 
end 

Итак:

  • Что такое правильный способ загрузить мой "ядро" библиотека
  • Почему я получаю ошибку выше?
+0

Уточните, что вы хотите загрузить и откуда. Я имею в виду, что 'Xaaron :: Core :: Loader' поступает из engine и' ApplicationController' из 'main_app'? – blelump

+0

Извините, что: 'Xaaron :: Core :: Loader' находится в' xaaron/lib/xaaron/core/loader.rb' - его обособленно от двигателя – SeekingTruth

ответ

0

Я думаю, ваша проблема связана с config.autoload_paths << File.expand_path("../xaaron/core/**", __FILE__). Он расширяется в smth, как Rails.root/lib/engine_name/xaaron/core/**, и ваш путь к lib должен быть Rails.root/lib/xaaron/core. Таким образом, в вашем случае, Lib путь должен быть config.autoload_paths << File.expand_path("../../xaaron/core", __FILE__)

Кроме того, неоспоримым в вашем ApplicationController, достаточно включить include Core::Loader, потому что вы уже в Xaaron пространства имен.

Прежде чем вы начнете работать с контроллерами, попробуйте просто позвонить своему модулю Xaaron::Core::Loader в пределах rails console.

+0

Теперь я получаю 'NameError: uninitialized constant Core' в' rails console'. Я добавил 'config.autoload_paths << File.expand_path (" ../../ xaaron/core ", __FILE __)' в 'engine.rb' Но я не думаю, что это помогло – SeekingTruth

+0

Это не так. Вы проверили, в каком пути 'File.expand_path (« ../../ xaaron/core », __FILE __)' расширяет (просто «ставит» или отлаживает его)? Если да, то является ли ваш модуль в этом каталоге? – blelump

Смежные вопросы