1

Rails / PostgreSQLの初心者で、RailsでPostgreSQLプロジェクトを作成する際に実際に問題が発生しています。

簡単に言えば、私はライアンズの優れたRailscastエピソード、特に展開に関するエピソードをフォローしています。次のような新しいプロジェクトを作成します。

rails new blog -d postgresql

これにより、次のようなファイルが生成されdatabase.ymlます(コメントが抽出されます)。

development:
  adapter: postgresql
  encoding: unicode
  database: blog_development
  pool: 5
  username: blog
  password:

test:
  adapter: postgresql
  encoding: unicode
  database: blog_test
  pool: 5
  username: blog
  password:

production:
  adapter: postgresql
  encoding: unicode
  database: blog_production
  pool: 5
  username: blog
  password:

これまでのところよさそうだ。

ただし、開発マシンでは、実行しようとするrake db:create:allと、次のようなメッセージが表示されます。

rake aborted!
FATAL: role "blog" does not exist

私の理解では、これは、アプリケーションの作成時に「ブログ」というユーザーを作成していない(つまり、Railsが作成していない)ためです。したがって、次のいずれかを行う必要があります。

  1. usernameすべての環境を、Homebrewをインストールしたときに選択したシステムの「スーパーユーザー」に変更します(これは機能します)。また
  2. 設定した個々のプロジェクトごとに新しいスーパーユーザーを作成します(たとえば、この場合はスーパーユーザー「ブログ」)。

さて、問題はこれです-私が作成する個々のプロジェクトごとにスーパーユーザーを作成する必要がありますか?もしそうなら、どのように?私が尋ねる理由は、RyanのRailscastsのエピソードでは実際にこれについて言及されていないため、これが正しいアプローチであるかどうか(少し時間がかかるようです)、またはPostgreSQLデータベースのインストールに問題があるかどうかはわかりません。 (アプリケーションの作成時に、データベースとともにスーパーユーザーが自動的に設定されると思っていたので)。

さらに、展開を容易にするために、開発環境と本番環境の両方でファイル全体を同じに保ちたいと思いdatabase.ymlます(ただし、展開についての知識がさらに少ないことは認めているので、これは理想的ではないかもしれません)。

ありがとう!

4

1 に答える 1

1

データベースユーザーの作成はあなた次第です。Railsはデータベースユーザーを作成しません。

プラットフォームによっては、ある種のデータベース管理GUIを使用して、ユーザーの作成とユーザーの権利の管理を容易にすることができます。PostgreSQL用のMacOSX実行可能ファイルに付属しているPGAdminを使用しています。他のプラットフォームでも利用できます。

開発では、多くの人がすべてのプロジェクトに同じ「スーパーユーザー」を使用します。本番環境では、最小限の権限を持つアプリケーション固有のユーザーを用意することをお勧めします。

database.ymldev環境とprod環境で同じであるという最後の段落を正確に理解していません。それがまさにポイントであり、すべての環境で1つのファイルであるためです。おそらく、開発と本番環境で同じ資格情報を使用するべきではありません。

于 2012-10-28T15:18:13.427 に答える