我正在开发 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
例如,当尝试加载 Posted 模型时,我收到错误uninitialized constant Stake::SharedPost
我缺少什么来访问我的 gem 的命名空间模块?
编辑:我已经阅读了acts_as 模式,这似乎不是最干净的做事方式,而且我不确定如何在我的引擎上实现它。还有其他解决方案吗?