2011-06-24 16 views
20

Forum application私は他のアプリケーションの中に組み込むことができるように、Railsエンジンに開発していますか?既存のRails 3アプリケーションをエンジンに変換するにはどうすればよいですか?

追加、削除、削除する必要はありますか?モデルを統合する方法を提示する必要がありますか?ルートとユーザー設定を設定するにはどうすればよいですか?どのようにそれをGemにパッケージングするのですか?私は何のために気を付けるべきですか?

  • は私がモデルを名前空間必要があります。


    記事およびドキュメントを読んだ後、私は私の質問を絞り込むために管理しましたか?つまり、エンジンのモジュールとapp/models/engineフォルダにそれらを保存する必要がありますか?

  • configの設定ファイルは何ですか?
  • publicフォルダはどうなりますか? Rails 3.1では、スタイルシートとjavascriptがapp/assetsフォルダに移動さ​​れましたが、この問題は解決されましたが、Rails 3.0でどのように同じ効果を達成できますか?

答えて

9

これらすべてを適切に回答するには、ここに質問が多すぎます。これは、掘り下げて試してみると、あなたのために報われるものの1つです。あなたがそれに深く入ると、戻ってきて新しい具体的な質問をしてください。

私が最近これを行ったときに私が使ったリソースのいくつかを紹介します。ほとんどの部分について

  • http://yehudakatz.com/2010/12/16/clarifying-the-roles-of-the-gemspec-and-gemfile/
  • http://www.themodestrubyist.com/2010/03/16/rails-3-plugins---part-3---rake-tasks-generators-initializers-oh-my/
  • http://pragprog.com/titles/jvrails/crafting-rails-applicationshttp://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/
    • 、あなたは彼らがあなたのアプリケーションディレクトリ内のものを維持することができます。また、あなたのroutes.rbをconfigディレクトリに置かなければなりませんが、あなたのルートのいくつかがアプリケーションのものと衝突する場合、いくつかの問題があるかもしれません。

      generatorを作成して、エンジンに必要なすべてのテーブルを持つ移行を作成することをお勧めします。他のジェネレータを作成して、デフォルトのビューやそのようなものを上書きすることもできます。

      gemを使用するテストアプリケーションを作成しますか?実行する問題の多くは、エンジンの依存関係を適切にロードしていることを確認しています。あなたが開発中ですが、まっすぐにあなたの宝石のソースを指すようにテストアプリケーションのGemfileを編集...このような何か:

      を名前空間

      gem 'my-forum', :path => '~/work/my-forum' 
      

      あなたは、少なくともあなたのテーブルに名前を付ける必要があります/ modelsを使用するので、名前の衝突に遭遇することはありません。あなたの現在のフォーラムアプリを見て、私は少なくともあなたのすべてのテーブルのプレフィックスを 'forum_'にしたいと思います。あなたのエンジンを使用している人がCategoryという別のモデルを持っている可能性は非常に高いです。だからForumCategoryが良い選択でしょう。

      libディレクトリに作成するすべてのクラスの名前空間を明確に名前空間にします。

      設定ファイル

      あなたはconfigディレクトリにあなたのroutes.rbを維持したいと思います。また、イニシャライザの周りを維持する必要があります。アプリ固有のものは、他の場所に移動する必要があります。

      公開ファイル

      のRails 3.0.xを使用すると、公開ディレクトリにスタイルシートとJavaScriptを保つことができます。私はあなたのEngineクラスに追加する必要があるコードのビットがあると思います...

      initializer "static assets" do |app| 
          app.middleware.use ::ActionDispatch::Static, "#{root}/public" 
      end 
      
  • +0

    ありがとう!それを勉強して試してみると、私は質問のリストを絞り込むことができました。しかし、まだ分かっていないことがあります。私の質問を更新しました。どうぞご覧ください。 –

    +0

    私はいくつかの追加をしましたが、詳細が必要な場合は、スタックオーバーフローに関する新しい質問を実際に開始する必要があります。 –

    関連する問題