我目前正在开发三个将使用相同数据库和相同模型的Rails应用程序。为了使它们保持同步,我想将这些模型移动到一个独立的gem中。
我已经阅读了RubyGems指南来创建我自己的gem但是我不确定应该如何处理某些事情(例如数据库凭据(database.yml
),测试模型,迁移......)
有关最佳做法的想法或对提供此行为的现有宝石的指示?
答案 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
时的情况一样。