2013-01-04 19 views
3

我正在構建使用ActiveRecord的非rails純ruby應用程序。我想編寫一個rake文件來爲它創建一個數據庫和表格。我嘗試下面的代碼如何在非Rails應用程序中使用ActiveRecord創建新的MySQL數據庫?

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數據庫。

+0

您的應用程序是否簡單地不使用Rails,或者不一起使用Rails或數據庫? – ply

+0

它不使用Rails,但使用ActiveRecord的MySQL數據庫。 –

回答

2

感謝的答案,但正如我在我的問題已經編輯,我忘了提,我想創建一個MySQL數據庫。我沒有通過ActiveRecord創建MySQL數據庫。然後我在mysql2寶石的幫助下解決了這個問題。這裏是我的解決方案:

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 ...') 
... 

這裏使用company_db「查詢是重要的,因爲,它告訴給我們要運行的查詢,這個數據庫上的寶石。

+0

如果您必須顯式創建所有表而不是使用ActiveRecord遷移/模式加載,這似乎有問題。 –

5

建立連接,有的東西一樣:

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

SQLite的數據庫(文件),如果它不存在被創建。然後執行遷移以創建表格。基於先前的問題

Can ActiveRecord create tables outside of a migration?

+0

@JoshuaPlicque感謝您的更新。 – Morgan

相關問題