RailsのActiveRecord使用したDB作成について質問です。


現在10日で覚えるRuby On Railsで学習中です。
本書ではmySQLを使用するとのことですが事情によりPostgreSQLを使用しています。
PostgreSQL用のアダプタやActiveRecordを使用に当たって必要な拡張ライブラリはインストールしました。

以下のようにDBを作成するrakeファイルを作成しました。

env = ENV['RAILS_ENV'] || 'development'
database = "memopad_#{env}"

task :connect_db => [:environment] do
ActiveRecord::Base.establish_connection(
:adapter => 'postgresql',
:host => 'localhost',
:username => 'postgres',
:database => 'postgres'
)
end

task :setup_db => [:connect_db] do
ActiveRecord::Schema.define do
create_database database;
end
end


しかしこのファイルを実行した結果は以下のの通りです。

(in /Users/***/Documents/workspace/memopad)
/Users/***/Documents/workspace/memopad/config/boot.rb:20:Warning: Gem::SourceIndex#search support for String patterns is deprecated, use #find_name
-- database("memopad_development")
rake aborted!
undefined method `create_database' for #<ActiveRecord::ConnectionAdapters::PostgreSQLAdapter:0x2560f98>

これはどのような問題が起きていてどのように解決すれば良いのでしょうか?

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2009/12/07 09:25:11
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答1件)

id:kn1967 No.1

回答回数2915ベストアンサー獲得回数301

ポイント60pt

>undefined method

メソッドが見つからない・・・インストールミスかとも思ったのですが、

どうもRailsの具合のほうが良くない(バグと言って良いのか?)らしくて、

create_databaseメソッドが使えないらしいので、

Execute で CREATE DATABASE を実施するという手段で対処してみてください。


execute "CREATE DATABASE 名前"

LOCATION や TEMPLATE、ENCODING などのオプションがあれば適宜加えてください。


以上、真の原因追求ではなく、とりあえずの回答で申し訳ないのですが・・・。

id:o8o

ありがとうございました。

2009/12/07 09:24:43

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません