2017-02-20 6 views
0

Rubyスクリプトでも使用したいモデルを、別のVMに配備するRailsアプリケーションにいくつか用意しています。RailsアプリケーションとRubyスクリプトの間でモデルを共有

私はこれらのモデルを含む宝石を作り、次にこの宝石を両方のアプリから要求することができました。私はgithubのリポジトリをリンクして、レールアプリからのモデルをRubyスクリプトでデプロイすることもできます。

私は宝石のアプローチがうまくいくかもしれないと思っていますが、ベストプラクティスはここにあります。

その他のオプションはありますか?

おかげ

+0

モデルをスタンドアロンのRubyスクリプトでどのように使用するかを拡張できますか?オブジェクトモデルだけを参照しているのですか?また、DBの既存のモデルとやりとりする機能も必要ですか? –

+0

これは主にDBの相互作用のためのものです。したがって、APIの公開/使用のみがこれに最も適しています。 – grizzthedj

+0

Gotcha。私はあなたの配備の設定と特定のスクリプトの必要条件に応じて、あなたのレールアプリを他のシステムに配備し、あなたのスクリプトをレーキタスクとして実装することと、別のサーバとやり取りするルビースクリプトを実行する方が意味があるかもしれません。 –

答えて

1

あなたはJSON経由コントローラが利用できるようにする場合は、インターネット上で簡単にアクセスできるようになります。

http://localhost:3000/people.json

[ 
    {"id":1, 
    "name":"Eva Smith", 
    "age":42, 
    "created_at":"2017-02-20T18:52:38.414Z", 
    "updated_at":"2017-02-20T18:53:03.112Z", 
    "url":"http://localhost:3000/people/1.json"}, 
    {"id":2, 
    "name":"John Smith", 
    "age":32, 
    "created_at":"2017-02-20T18:52:55.463Z", 
    "updated_at":"2017-02-20T18:52:55.463Z", 
    "url":"http://localhost:3000/people/2.json"} 
] 

あなたはRubyの終わりにこれを解析して、オブジェクトの配列に変換することができます。

JSON.parse(json_string, object_class: OpenStruct)

+0

エンドポイントを公開するのが最も理にかなっていると思います! – grizzthedj

0

私は、私は私の答えを拡張しようと思いました。あなたのサーバに存在するレコードを他のスクリプトでどのように使用するのかということが分かったので、基本的に2つの選択肢があります。あなたはアプリでこれをやっていますか?

レーキタスクとしてスクリプト

ロード問題の仮想マシンへのアプリのコピーを実行し、rakeタスクとしてスクリプトを実行します。これを行う利点は簡単です。

  • スクリプトとモデルロジックの統合が強化されています。
  • APIの変更は、1つのコードベースを管理するだけで済むようになります。
  • コード共有(モデルメソッド、ヘルパーなど)
  • 追加のRailsサーバーに依存しません。

欠点:展開プロセス(宝石インストール、スピンアップ、など)によってで必要とされる

  • VMのリソースは、実用的ではないかもしれません。
  • サーバーの変更と同時にVMに変更を展開する必要があります。

メリットはかなり上記の逆のAPI

でレコードを公開します。

関連する問題