7

gem化する必要があるRuby on Railsアプリがあります。ジュエラーは、基本的なルビジェムの作成を支援します。しかし、Rails アプリを gem としてパッケージ化するにはどうすればよいでしょうか? Rails アプリを gem として必要とするメイン アプリがあります。メインのレールアプリは管理アプリとして使用され、小さなアプリを制御し、宝石/エンジンとして実行されるため、それらを統合することはできません。

4

1 に答える 1

5

Rails 3.0 以降、Rails アプリはすべてエンジンです。アプリケーションを gem にラップするには、次のことを行う必要があります。

  1. bundler や jeweler などで新しい gem を作成します。
  2. アプリケーション コードを gem の lib/ ディレクトリに挿入します。
  3. アプリのすべてのクラスは MyGem モジュールにある必要があるため、Article => MyGem::Article のように、クラス名の前に MyGem を追加します。すべてのコントローラー、モデルなどは、モジュール GemName で名前空間を指定する必要があります。
  4. ファイル lib/my_gem.rb には、次のコードが含まれている必要があります。

    module MyGem
      class Engine < Rails::Engine; end
    end
    

UPD

または、マウント可能なエンジンを使用する方が良いでしょう:

$ rails plugin new MyGem

テストやgemspec用のダミーアプリでマウント可能なエンジンを生成します。

于 2012-07-16T19:05:55.157 に答える