【发布时间】:2012-08-23 11:23:28
【问题描述】:
我正在开发 Rails 应用程序的基础架构,并试图从某人现有的项目中获取一些东西。 我对 Rails 有点陌生,但我阅读了关于插件和引擎等的指南。
所以我有一个 gemified 引擎,包含一些模块。我有一个模型说 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 模式,这似乎不是最干净的做事方式,而且我不确定如何在我的引擎上实现它。还有其他解决方案吗?
【问题讨论】:
标签: ruby-on-rails gem rails-engines