首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在gem中使用schema.rb

在gem中使用schema.rb
EN

Stack Overflow用户
提问于 2013-03-19 19:23:58
回答 5查看 1.3K关注 0票数 4

我希望rake db:schema:load使用的db/schema.rb不是位于我的应用程序中,而是位于我的一个gem中。通过将config.paths['db/seeds'] = Core::Engine.paths['db/seeds'].existent放入我的application.rb中,这已经对db:seed有效。(核心是一个宝石,也是一个Rails引擎)。

但是,config.paths中没有db/schema.rb路径,config.paths['db'] = Core::Engine.paths['db'].existent不起作用。

做这件事最简单的方法是什么?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-03-29 21:46:01

根据Rails3.2源代码https://github.com/rails/rails/blob/3-2-stable/activerecord/lib/active_record/railties/databases.rake#L400,设置SCHEMA env变量应该会有所帮助:

代码语言:javascript
复制
ENV['SCHEMA'] = Core::Engine.paths['db'].existent

据我所知,在Rails 4中,数据库任务已经发生了很大的变化,因此这种方法在Rails 4中不一定有效。

另一种选择是覆盖gem中的rake任务本身。

票数 4
EN

Stack Overflow用户

发布于 2015-08-28 04:10:17

对于任何偶然发现这一点的人来说,从Rails4.0开始,你可以在你的引擎配置中设置'db‘键,主应用程序将在那里查找你的模式。

active_record/railties/databases.rake

代码语言:javascript
复制
module MyEngine
  class Engine < ::Rails::Engine
    initializer :override_db_dir do |app|
      app.config.paths["db"] = config.paths['db'].expanded
    end
  end
end
票数 5
EN

Stack Overflow用户

发布于 2013-03-19 19:45:13

您可以从gem - rake gem_name:install:migrations获取迁移

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15498128

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档