如何在Rails中设置database.yml文件?

时间:2011-09-05 06:37:40

标签: ruby-on-rails ruby database yaml

我正在做这个教程(http://dmix.ca/2008/09/how-to-scrape-websites-in-ruby-on-rails-using-scrubyt/),在我开始之前的第4步是设置database.yml文件。不确定那是什么意思。有人可以解释一下吗?

3 个答案:

答案 0 :(得分:66)

database.yml是您设置连接到数据库的所有信息的文件。它根据您使用的DB类型而有所不同。您可以在Rails Guide或任何解释如何设置rails项目的教程中找到有关此内容的更多信息。

database.yml文件中的信息由环境确定,允许您为测试,开发或生产获取不同的设置。如果您不希望在运行测试套件时错误地删除用于开发的数据,那么保持这些区别非常重要。

关于源代码管理,您不应提交此文件,而应为其他开发人员创建模板文件(称为database.yml.template)。部署时,约定是直接在服务器上的/shared/config中创建此database.yml文件。

使用SVN:svn propset svn:ignore config "database.yml"

使用Git:将config/database.yml添加到.gitignore文件或git-extra git 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

答案 1 :(得分:18)

database.yml是使用/config中的新rails应用程序创建的文件,它定义了应用程序将在不同环境中使用的数据库配置。 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           

答案 2 :(得分:2)

起初我会使用http://ruby.railstutorial.org/

并且database.yml是您为应用程序使用的数据库设置的位置 - 用户名,密码,主机 - 用于每个数据库。使用新的应用程序,您无需更改任何内容 - 只需使用默认的sqlite设置。