1

2 つの個別の Rails アプリケーション (アプリ a、アプリ b) があります。これらのアプリはどちらも顧客リストを保持しています。1 日に 1 回レーキ タスクを実行し、アプリ b でアプリ a から選択した顧客を取得したいと考えています。

これは私がこれを解決しようとした方法です。間違った道を進んでいる場合は、お知らせください。

JBuilder を使用して JSON を生成しています

私の問題は、アプリ B がアプリ A に ID を設定して、顧客が既に転送されていることをシステムが認識できるようにする方法にあります。

顧客リストを取得するために行ったことと同様の put リクエストを行う必要があると想定していますが、それを機能させるのに問題があります。

アプリ A

顧客モデル

scope :for_export, :conditions => {:verified => true, :new_system_id => nil ...}

顧客コントローラー

skip_before_filter :verify_authenticity_token, :only => [:update]

#
def index
    @customers = Customer.for_export
end

def update
    @customer = Customer.find(params[:id])
    if @customer.update_attributes(params[:customer])
        render :text => 'success', :status => 200
    end
end

アプリ B

レーキタスク

task :import_customers => :environment do
   c = Curl::Easy.new("http://domain.com/customers.json")
   c.http_auth_types = :basic
   c.username = 'username'
   c.password = 'password'
   c.perform
   a = JSON.parse(c.body_str)

   a.each do |customer|
       customer = Customer.create(customer)
           #put request back to server a to update field
       end


end

終了 終了

私が持っているものは現在機能していますが、これが正しい方法であるかどうか、また顧客コントローラーで update メソッドを呼び出す put リクエストを開始する方法がわかりません。

ありがとう!

ライアン

4

1 に答える 1

0

質問に答えていなくて申し訳ありませんが、代わりの方法を教えてください。あなたが作成しようとしているものは、ETL ジョブのように聞こえます。バッチ ジョブで顧客テーブルのコピーをアプリ a からアプリ b に定期的に移動し、別のバッチ ジョブでそのテーブルをアプリ b のデータベースにインポートすることを検討してください。少し不格好ですが、問題を解決するための非常に人気があり、信頼できるパターンです。

また、両方のアプリが同じデータ センターにある場合は、アプリ a の顧客データの読み取り専用データベース ビューを作成し、SQL 呼び出しを使用してアプリ b にそれを読み取らせることができます。上記のオプションよりも、2 つのアプリを統合するのに少し安くて簡単な方法です。

幸運を!

于 2012-05-09T20:22:29.723 に答える