【问题标题】:Is there a way to use schema.rb to create a database from inside Rails?有没有办法使用 schema.rb 从 Rails 内部创建数据库?
【发布时间】:2012-05-21 16:27:58
【问题描述】:

在 Rails 3.2.3 应用程序中,我需要允许管理员创建数据库并使用 schema.rb 中的表填充它。

只执行 schema.rb 中的代码是理想的。基本上,我正在寻找一种方法:

rake db:setup

不使用“耙子”。

我还有几件事想做,比如备份数据库,我想知道是否有 Rails DSL 可以使用,或者我是否只需要编写 SQL 并通过 ActiveRecord 运行它::Base.connection.execute。

感谢您提供的任何帮助。

【问题讨论】:

  • 那么新数据库应该与开发、生产或测试分开吗?
  • 您可以使用后台引擎 (resque/sidekiq) 为您运行 rake db:setup db:seed

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


【解决方案1】:

您可以尝试从您的应用程序运行它:

 system("rake db:setup")

【讨论】:

  • 我无法使用 rake 任务。我创建的数据库不属于任何 Rails 环境。 rake 任务从 Rails 环境中确定数据库信息。
【解决方案2】:
rake db:setup
rake db:schema:load 

这将创建一个数据库(如果不存在)并将schema.rb 加载到数据库中。如果您不想使用rake,您可以将架构存储为原始 sql 并加载它。

您可以使用backup gem 进行备份。

【讨论】:

  • 我无法使用 rake 任务。我正在创建的数据库不属于任何 Rails 环境。 rake 任务从 Rails 环境中确定数据库信息。
  • 您不需要 rake 将 sql 文件加载到数据库中。只需设置config.active_record.schema_format = :sqlapidock.com/rails/v3.2.3/ActiveRecord/Base/schema_format/class
【解决方案3】:

我不知道我是否理解正确,但是

你可以使用种子.rb 所以你可以创建表格条目 喜欢:

Person.create(email: "tom@mail.com", firstname: "Tom", phone: "0049-0")

然后做一个

rake db:seed

在控制台中

【讨论】:

    【解决方案4】:

    您可以使用 'load "path/to/schema.rb" 加载它,它将从当前打开的连接创建数据库

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 2015-06-05
      • 2020-03-25
      • 2013-10-14
      相关资源
      最近更新 更多