在Rails应用程序和Ruby脚本之间共享模型

时间:2017-02-20 18:26:08

标签: ruby-on-rails ruby

我的Rails应用程序中有一些模型,我想在Ruby脚本中使用,它们部署在不同的VM上。

我可以创建一个包含这些模型的gem,然后从这两个应用程序中获取这个gem。我还可以在github中链接存储库,以便使用Ruby脚本部署rails应用程序中的模型。

我觉得宝石方法可能会奏效,但不确定这里的最佳做法是什么。

还有其他选择吗?

由于

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

我以为我会扩展我的答案。现在知道问题是如何在其他脚本中使用服务器上存在的记录,基本上有两种选择。您是在应用程序中执行此操作还是执行此操作?

将脚本作为Rake任务运行

将应用程序的副本加载到相关VM中,并将脚本作为rake任务运行。这样做的好处很简单:

  • 脚本和模型逻辑之间更紧密的集成。
  • 只需管理一个代码库,就可以轻松更改API。
  • 代码共享(模型方法,助手等)
  • 不依赖于额外的Rails服务器。

缺点:

  • 部署过程所需的VM资源(gem安装,启动等)可能不实用。
  • 需要能够在服务器更改的同时将更改部署到VM。

使用API​​公开记录

好处几乎与上述相反。