2011-02-23 134 views
5

因此,我想在两个Rails应用程序之间共享模型,并且不喜欢子模块解决方案(过去让我烧了)。我在考虑使用宝石来解决这个问题,并有这样的基本工作:在使用gems的Rails应用程序之间共享模型

  1. 使用珠宝商(my_models)创建宝石
  2. 创建的东西在的Gemfile像一个Rails应用程序: gem 'my_models', :path => '../my_models'这样就可以避免不断包装宝石等
  3. 使用猎枪不断地重新加载的所有类(否则你真的不能编辑my_models文件,而无需每次都重新启动服务器/控制台

那么几个问题:

  1. 霰弹枪速度很慢,Rails中有没有更好的方法来重新加载这一颗宝石?
  2. 如果我的my_models ActiveRecord模型具有依赖性,我把它们放在my_models gems中,这会在我的常规应用程序中导致依赖性噩梦吗?
  3. 还有什么我错过了为什么这可能是一个坏主意?

回答

0

如果您使用带有子模块支持的VCS(如Git),您可以将模型放入不同的存储库并将其作为Rails应用程序的子模块。这会给你一个几乎毫不费力的代码共享 - Rails甚至不知道你在作弊。

+0

我认为子模块是一个坏主意,因为它将存储库结构与代码结构分开(例如,你如何处理测试等) – David 2011-02-25 14:50:09

+0

然后将子模块拉入供应商并设置符号链接(可能使用Rake任务)从主体结构到子模块可能是一个答案。基本上这就像有一个单独的宝石,但没有宝石包装和重新加载的开销。 – 2011-02-25 17:27:20