iTunes Enterprise Partner Feed是“来自iTunes和App Store的完整元数据集的数据馈送”和“有两种不同的格式 - 可以作为构建关系数据库所需的文件,也可以作为单独的国家和媒体依赖的平面文件。“
我需要使用此Feed中的数据(实际上是导出到平面文件中)并允许将我自己的Model对象(User,Activity等)链接到feed(App,Developer等)提供的数据。 )数据以每周完整导出和每日增量导出的形式提供。
我有两个实现方法的想法:
我使用#1 来保持Rails应用程序中所有内容的天真方法是基于需要能够观察我从EPF获得的数据的变化。例如,如果更新了应用程序的描述,我希望能够通过观察者创建一个Activity对象来跟踪该更新。
一方面#2 感觉就像是一种更好的方法,因为它会在数据中创建一个独立的API,可以从我创建的几个不同的应用程序中使用。另一方面,我不确定如果不直接在我自己的模型上使用观察者,我将如何完成数据更改通知。或者,我甚至会以面向对象的方式使用数据,这仍然可以用于我自己的模型。感觉就像要复制一个应用程序数据的API,为它创建一个合适的Active Record对象,然后保存它,以便它可以链接到我自己的模型之一。 >
有没有一种标准的方法来做到这一点我完全失踪了?有什么指针吗?
编辑: Rails引擎听起来很有趣,但这意味着每个应用仍然需要消费并单独插入数据。这听起来不那么干。听起来越来越像REST API是要走的路。我只是不知道如何弥合从API到Active Record模型的差距。
答案 0 :(得分:0)
Rails引擎可能非常适合这种情况。您可以创建Rails引擎gem并添加所有模型和rake任务以使用数据。然后,您可以在任何使用它的应用程序中包含此gem,并创建包含gem的API应用程序。您应该能够在与gem交互的其他应用程序中创建观察者。
我有很多相互交互的应用程序,这种方法对我很有用。我有一个中央应用程序,其中包含所有使用数据的引擎,我从这个应用程序运行我的所有cronjobs。我使用use_db
插件,允许我的应用程序与不同的数据库进行通信。每个引擎都有use_db
作为依赖项,我将数据库配置保留在gem中。一个例子:
我没有在包含我的引擎的应用程序中使用观察者,但我认为没有理由说它不起作用。使用引擎,模型就像在app / models目录中一样工作。希望这有帮助!
谦虚的Rubyist有一个很好的4部分关于Rails 3插件的教程,其中包括Engines:
http://www.themodestrubyist.com/2010/03/05/rails-3-plugins---part-2---writing-an-engine/