2017-02-20 131 views
0

我在Rails應用程序中使用了一些模型,我希望在部署在單獨的VM上的Ruby腳本中使用這些模型。在Rails應用程序和Ruby腳本之間共享模型

我可以創建一個包含這些模型的gem,然後從這兩個應用程序中獲取這個gem。我還可以鏈接github中的存儲庫,以便Rails應用程序中的模型可以使用Ruby腳本進行部署。

我覺得寶石方法可能工作,但不知道最佳做法是在這裏。

還有其他的選擇嗎?

感謝

+0

你可以擴展如何在獨立的Ruby腳本中使用模型嗎?你是指僅僅是對象模型,還是你還需要能夠與數據庫中的現有模型進行交互? –

+0

它主要用於數據庫交互。所以只是暴露/使用API​​對此最有意義。 – grizzthedj

+0

哎呀。我會注意到,根據您的部署配置和特定的腳本需求,將rails應用程序部署到其他系統並將腳本實現爲rake任務vs運行與另一個服務器交互的ruby腳本可能更有意義。 –

回答

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

我想我會在我的答案擴大。現在知道問題是如何使用其他腳本中服務器上存在的記錄,基本上有兩種選擇。你在應用程序中執行此操作,還是在外面?

運行腳本,Rake任務

加載應用程序的副本到虛擬機的問題,運行腳本作爲流氓的任務。這樣做的好處很簡單:

  • 腳本和模型邏輯之間的緊密集成。
  • 當您只需要管理一個代碼庫時,更改API更容易。
  • 代碼共享(模型方法,幫手等)
  • 不依賴額外的Rails服務器。

缺點:

  • 由部署過程所需的VM資源(創業板安裝,自旋向上等),可能是不切實際的。
  • 需要能夠在服務器更改的同時將更改部署到虛擬機。

揭露記錄與API

的好處是非常以上的倒數。

相關問題