0

我正在开发 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 模式,这似乎不是最干净的做事方式,而且我不确定如何在我的引擎上实现它。还有其他解决方案吗?

4

1 回答 1

1

lib/stake.rb你包括lib/stake/shared_post.rb文件?

它应该看起来像这样:

# file lib/stake.rb

require "stake/shared_post.rb"

module stake
    ....
end
于 2012-08-24T21:58:26.263 回答