有没有办法在Rails内部使用schema.rb创建一个数据库?

3
在一个Rails 3.2.3应用中,我需要允许管理员创建数据库并使用schema.rb中的表填充它。
只需执行schema.rb中的代码即可。基本上,我正在寻找一种方法来执行以下操作:
rake db:setup

不使用 "rake"。

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

非常感谢您能提供的任何帮助。


那么新的数据库应该是独立于开发、生产或测试环境的吗? - DVG
你可以使用一个后台引擎(resque/sidekiq)来运行rake db:setup db:seed。 - Jesse Wolgamott
4个回答

5
你可以尝试从你的应用程序运行它:
 system("rake db:setup")

我无法使用rake任务。我创建的数据库不属于任何Rails环境。rake任务从Rails环境中确定数据库信息。 - RubyRedGrapefruit

2
rake db:setup
rake db:schema:load 

这将创建一个数据库(如果不存在),并将 schema.rb 加载到数据库中。如果不想使用 rake,可以将 schema 存储为原始 SQL 并加载它。
你可以使用 backup gem 进行备份。

我无法使用rake任务。我创建的数据库不属于任何Rails环境。rake任务从Rails环境确定数据库信息。 - RubyRedGrapefruit
你不需要使用 Rake 将 SQL 文件加载到数据库中。只需设置 config.active_record.schema_format = :sql 即可。http://apidock.com/rails/v3.2.3/ActiveRecord/Base/schema_format/class - NARKOZ

1
我不确定我是否理解正确,但是你可以使用seeds.rb来创建表格条目,例如:
Person.create(email: "tom@mail.com", firstname: "Tom", phone: "0049-0")

然后制作一个

rake db:seed

在控制台中


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接