2016-01-20 34 views
1

我在此之后创建了一个Mountable引擎,我在lib中创建了一个文件类。可挂载引擎 - 未初始化的常量Customer(NameError)

像这样:

路径:/lib/dog.rb

类:

class Dog 
     def initialize(breed, name) 
     @breed = breed 
     @name = name 
    end 

    def bark 
     puts 'Ruff! Ruff!' 
    end 

    def display 
     puts "I am of #{@breed} breed and my name is #{@name}" 
    end 
    end 

我在 /config/initializers/scheduler.rb一个初始化与内容:

d = Dog.new('Labrador', 'Benzy') 

当我开始我的轨我收到的应用这个错误:

uninitialized constant Dog (NameError) 

我试图创建/配置一个application.rb中的文件/与内容require '/lib/customer.rb'require 'rails/all',但不起作用。

+0

敢肯定你需要使用'引擎名称:: Dog.new( “拉布拉多” ,“Benzy”)' –

+0

Doest work same error @ j-dexx – lolix

+0

初始化程序运行时没有设置环境声音,所以rails尚未加载所有文件。 –

回答

1

你是否按照这里的指南? http://guides.rubyonrails.org/engines.html

它说,包括你的类如:

module Dog 
    class Engine < ::Rails::Engine 
    end 
end 

,但我不相信这只是你的情况。你需要经过几个步骤,它不是作为一个普通的Ruby库来实现的,它只是被包含在内。

+1

我的默认engine.rb是:'module Alarm class Engine <:: Rails :: Engine isolate_namespace Alarm end end'我该如何添加? – lolix

0

我面临同样的问题,模块不加载。通过指定autoload_path在engine.rb

解决问题在发动机的lib/engien_name/engine.rb

class Engine < ::Rails::Engine 
    config.autoload_paths += %W(#{config.root}/lib/modules) 
end 
相关问题