对Rails模型使用外部gem

时间:2017-05-23 22:05:31

标签: ruby-on-rails activerecord rubygems

我目前正在开发三个将使用相同数据库和相同模型的Rails应用程序。为了使它们保持同步,我想将这些模型移动到一个独立的gem中。

我已经阅读了RubyGems指南来创建我自己的gem但是我不确定应该如何处理某些事情(例如数据库凭据(database.yml),测试模型,迁移......)

有关最佳做法的想法或对提供此行为的现有宝石的指示?

1 个答案:

答案 0 :(得分:1)

迁移进入你的宝石。

您可以将它们包含在您的包含应用程序中,方法是将它放在gem的engine.rb文件中(使用Rails :: Engine时):

'lib/your_gem/engine.rb'

module YourGem
  class Engine < ::Rails::Engine
    initializer :append_migrations do |app|
      unless app.root.to_s.match root.to_s
        config.paths["db/migrate"].expanded.each do |expanded_path|
          app.config.paths["db/migrate"] << expanded_path
        end
      end
    end
  end
end

你没有 使用Rails::Engine(事实上,它带来了一些不必要的开销)。但是,如果你是第一次这样做,这可能是最简单的事情。

schema.rb将在您的包含应用的db目录中自动生成,就像您运行rake db:migrate时的情况一样。