2017-02-20 104 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

的好处是非常以上的倒数。

相关问题