0

私は 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パターンを読みましたが、それは物事を行う最もクリーンな方法ではないようです。さらに、それをエンジンに実装する方法もわかりません。別の解決策はありますか?

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 に答える