私は Rails アプリケーションのインフラストラクチャに取り組んでおり、誰かの既存のプロジェクトから何かを取り出そうとしています。私はレールに慣れていませんが、プラグインやエンジンなどのガイドを読みました..
それで、いくつかのモジュールを含むgem化されたエンジンがあります。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 の名前空間付きモジュールにアクセスするには何が欠けていますか?
EDIT:acts_asパターンを読みましたが、それは物事を行う最もクリーンな方法ではないようです。さらに、それをエンジンに実装する方法もわかりません。別の解決策はありますか?