22

私は現在、RubyonRailsを使用して2つのAPIを構築しています。1つは読み取り(オブジェクトの検索、クエリ)用で、もう1つは実際に書き込むためのもので、キューと別のAPIを使用した一種の複雑なプロセスが含まれます。どちらのアプリケーションにも、まったく同じモデルとロジックが必要です。

私の質問は、2つのレールアプリケーション間でモデルの仕様(関係、スコープ、メソッド)を共有するための最も一般的なベストプラクティスまたはアプローチは何ですか?

ありがとうございました!

4

5 に答える 5

4

私がそれをする方法は「マウント可能なエンジン」です。スターターについてはRyanBatesによる優れたRailscastを、詳細についてはapi.rubyonrails.orgのエンジンセクションを確認してください。

よろしくお願いいたします。マンディ

于 2012-05-08T09:16:43.230 に答える
1

モデルを共有したいだけの場合は、他のプロジェクトモデルフォルダーを自動読み込みパスに追加できます。

rails new test1
rails new test2
cd test1
rails g model User 
cd ../test2/
# ACTION REQUIRED: edit config/application.rb adding this line
# inside the class Application < Rails::Application block:
#
# config.autoload_paths += %W(#{config.root}/../test1/app/models)
#
mkdir db/migrate
cp ../test1/db/migrate/*_create_users.rb db/
mv db/*_create_users.rb db/migrate/
rake db:migrate
rails r 'puts User.inspect' 
#=> User(id: integer, created_at: datetime, updated_at: datetime)

3番目の共有フォルダーを使用して、2つのapp/modelsフォルダーをプライベートとして設定し、これをプロジェクトに追加することもできます。

# config.autoload_paths += %W(/path/to/a/shared/folder)

このフォルダーは、プロジェクトごとに同じフォルダーではない場合もあるため、たとえば、gitサブモジュールへのパスである可能性があります(GITを使用する場合は、このソリューションをお勧めします)。

別のオプションはapp/models、ソフトリンクで共有フォルダを指すことです。

于 2012-06-03T14:04:29.733 に答える
1

これを行うための私のトリックは、実際にはRailsのトリックを使用しないことです。私は「git」トリックを使用し、3番目の共有コードリポジトリからコードをプルします。私はこれをエンジンとして、そして外部のgitリファレンスとして両方のアプリに入れました。

もう少し手間がかかりますが、1つのアプリで一度実行すると、次のアプリのテンプレートとしても簡単に使用できます。

于 2012-06-06T17:48:32.283 に答える
0

その仕事のためにgitサブモジュールを試すことができます。

http://git-scm.com/book/en/Git-Tools-Submodules

于 2012-06-06T20:26:22.750 に答える