2011-09-05 6 views

答えて

2

最初は私がhttp://ruby.railstutorial.org/を使用します。

database.ymlは、各データベースのアプリケーションで使用するデータベース(ユーザ名、パスワード、ホスト)の設定を保存する場所です。新しいアプリケーションでは、何も変更する必要はありません。単純にデフォルトのsqlite設定を使用します。

16

database.ymlは、新しいレールアプリケーション/configで作成され、さまざまな環境でアプリケーションが使用するデータベース構成を定義するファイルです。 Read this for details.

例のdatabase.ymlを:

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: mysql 
    encoding: utf8 
    database: your_db 
    username: root 
    password: your_pass 
    socket: /tmp/mysql.sock 
    host: your_db_ip  #defaults to 127.0.0.1 
    port: 3306   
+0

'database.yml'ファイルがソース管理にチェックインされている場合、データベースのパスワードがチェックインされている場合、特にプロダクションから本当に悪いことはありませんか? – Makoto

+1

@Makotoはい、それは危険です。 1つの選択肢は、環境変数を使用することです。たとえば、Herokuは、ユーザー名、パスワード、DBの場所などのデータを含む 'DATABASE_URL'環境変数を使用します。次に、そのenv varを解析し、それを使用して 'database.yml'ファイルを作成します。 – Dennis

58

database.ymlは、データベースに接続するためのすべての情報を設定するファイルです。使用するDBの種類によって異なります。この詳細については、Rails Guideまたはレールプロジェクトの設定方法を説明するチュートリアルを参照してください。

database.ymlファイルの情報は、環境によってスコープが設定されており、テスト、開発、またはプロダクションの設定を変更することができます。テストスイートを実行している間に誤って開発用に使用したデータを削除したくない場合は、それらを区別しておくことが重要です。

ソースコントロールに関しては、このファイルをコミットするのではなく、他の開発者用のテンプレートファイル(database.yml.template)を作成してください。デプロイするときは、このデータベースの.ymlファイルをサーバ上で直接/shared/configに作成します。 SVNで

:Gitのではsvn propset svn:ignore config "database.yml"

:.gitignoreファイルにconfig/database.ymlを追加するかgit-extragit ignore config/database.yml


...そして今、いくつかの例:

SQLiteの

adapter: sqlite3 
database: db/db_dev_db.sqlite3 
pool: 5 
timeout: 5000 

MYSQL

adapter: mysql 
database: my_db 
hostname: 127.0.0.1 
username: root 
password: 
socket: /tmp/mysql.sock 
pool: 5 
timeout: 5000 

MongoIDとのMongoDB(mongoid.ymlと呼ばれますが、基本的には同じもの)

host: <%= ENV['MONGOID_HOST'] %> 
port: <%= ENV['MONGOID_PORT'] %> 
username: <%= ENV['MONGOID_USERNAME'] %> 
password: <%= ENV['MONGOID_PASSWORD'] %> 
database: <%= ENV['MONGOID_DATABASE'] %> 
# slaves: 
# - host: slave1.local 
#  port: 27018 
# - host: slave2.local 
#  port: 27019 
関連する問題