如何在非rails应用程序中使用ActiveRecord创建新的MySQL数据库?

我正在构建一个使用ActiveRecord的非rails纯ruby应用程序。 我想写一个rake文件,为它创建一个数据库和表。 我尝试以下代码

namespace :db do task :create do conn = ActiveRecord::Base.connection create_db = "CREATE DATABASE foo_dev" conn.execute(create_db) end end 

但这给了我

 ActiveRecord::ConnectionNotEstablished: ActiveRecord::ConnectionNotEstablished 

错误。 嗯,这很明显,因为我没有将ActiveRecord连接到任何数据库。

我该怎么办?


编辑:我想创建一个MySQL数据库。

建立一个连接,有些事情如下:

 ActiveRecord::Base.establish_connection( :adapter => 'sqlite3', :database => './your_db.db' ) 

对于sqlite,如果数据库(文件)不存在,则会创建它。 然后执行迁移以创建表。

基于上一个问题, ActiveRecord可以在迁移之外创建表吗?

感谢您的回答,但正如我在我的问题中编辑的那样,我忘了提到我想创建一个MySQL数据库。 我无法通过ActiveRecord创建MySQL数据库。 然后我在mysql2 gem的帮助下解决了这个问题。 这是我的解决方案:

 client = Mysql2::Client.new(:host => 'localhost', :username=>"#{YOUR_MYSQL_USERNAME}", :password=> "#{YOUR_MYSQL_PASSWORD}") client.query("CREATE DATABASE company_db") client.query('USE company_db') client.query('CREATE TABLE employees ...') ... 

这里’USE company_db’查询很重要,因为它告诉gem我们要在这个数据库上运行查询。