3

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 データベースを作成したい。

4

4 に答える 4

5

次のような接続を確立します。

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

sqlite の場合、データベース (ファイル) が存在しない場合は作成されます。次に、移行を実行してテーブルを作成します。

前の質問に基づいてActiveRecord は移行外でテーブルを作成できますか?

于 2013-01-04T16:53:08.057 に答える
1

回答ありがとうございます。質問を編集したときに、MySQL DB を作成したいということを忘れていました。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 に伝えるためです。

于 2013-01-21T09:17:37.873 に答える