使用Rails的客户/客户特定代码

时间:2014-07-15 08:26:35

标签: ruby-on-rails ruby ruby-on-rails-3

在一个项目中,我们为Rails 3应用程序提供了多个客户/客户端,其中一些应用程序需要特定的代码,尽管我们尝试通过配置应用程序来解决尽可能多的需求。

我们希望将所有客户代码放在一个分支中,但在不同的目录中。因此,我现在正在试验autoload_paths

config.autoload_paths += Dir[Rails.root.join('customer', 'abc', 'app', 'models')]

这适用于新文件/类/模型,但不可能使用此方法修改现有模型/类。例如,我想从app/models/test_model.rb

customer/abc/app/models/test_model.rb添加一个方法
class TestModel
  def self.test_me; 123; end
end

不幸的是,这会覆盖整个类/模型而不仅仅是这个单一方法。我知道我可以在Ruby中执行此操作,即使是String等核心类:

class String
  def to_bla; "bla"; end
end

对于rails模型是否也可以有这种行为,或者是否有更好的方法将客户特定代码与项目的其余部分分开?我更喜欢一个解决方案,我不必在我想要自定义的文件中插入requireinclude s。当rails在开发模式下自动重新加载文件以更改客户特定文件时,它也会很棒。

0 个答案:

没有答案