我正在为Rails应用程序开发基础架构,我正试图从某些现有项目中取出一些东西。 我对rails很新,但我阅读了关于插件和引擎的指南等。
所以我有一个gemified Engine,包含一些模块。我有一个模型说,SharedPost试图扩展所述模块,我得到未初始化的常量错误
uninitialized constant Stake::SharedPost
以下是我的引擎的一些内容:
#file: lib/stake/shared_post.rb
module Stake
module SharedPost
...
end
end
#file: lib/stake/engine.rb
module Stake
class Engine < ::Rails::Engine
isolate_namespace Stake
end
end
在主应用程序中我有
#file: Gemfile
...
gem 'stake'
...
#file: config/routes.rb
Pop::Application.routes.draw do
root :to => 'home#index'
mount Stake::Engine, :at => '/stake'
end
#file: app/models/posted.rb
class Posted < ActiveRecord::Base
extend Stake::SharedPost
...
end
end
主应用程序将加载,但没有可用的数据。 我试着跑
rake db:seed
例如,在尝试加载已发布的模型时,我收到错误uninitialized constant Stake::SharedPost
访问我的gem的命名空间模块我错过了什么?
编辑: 我已经阅读了acts_as模式,这似乎不是最干净的做事方式,而且我不确定如何在我的引擎上实现它。还有其他解决方案吗?
答案 0 :(得分:1)
在lib/stake.rb
中,您是否包含lib/stake/shared_post.rb
文件?
看起来应该是这样的:
# file lib/stake.rb
require "stake/shared_post.rb"
module stake
....
end