1

我正在尝试就具有以下 .gitignore 的项目进行合作:

# Ignore bundler config.
/.bundle

# Ignore the default SQLite database.
/db/*.sqlite3
/db/*.sqlite3-journal

# Ignore all logfiles and tempfiles.
/log/*.log
/tmp

# Ignore other unneeded files.
database.yml
doc/
*.swp
*~
.project
.DS_Store
.idea
.secret

因此,数据库以及所有相关文件都丢失了,如果我尝试启动服务器,这会使 rails 向我抛出错误,并且我也会中止 rake!如果我尝试运行 db:create/migrate/etc 时出错(未找到 yml 文件,未指定适配器)。

关于如何以最正确/有效的方式解决问题的任何指示?

4

3 回答 3

2

您永远不应该为项目提供数据库。正常的事情是由您创建它:

  1. database.yml 文件应该定义数据库的名称,因此rake db:create应该为您正确创建它。
  2. 架构应该在 schema.rb 文件中定义,在这种情况下您将运行rake db:schema:load它,或者它可以通过迁移(或两者)提供。在第二种情况下,只需运行rake db:migrate. 如果迁移定义明确(并且应该如此),则这两个选项是等效的。
  3. 如果应用程序还需要一些数据来运行,这应该放在种子.rb 文件中,您可以使用它来加载rake db:seed
于 2013-08-07T10:54:37.093 回答
1

我建议使用 sqlite 作为适配器创建一个 database.yml 文件:

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

确保也添加sqlite3到您的 Gemfile 中。然后运行rake db:schema:load以从 schema.rb 文件设置数据库。

我使用“沙盒”环境执行此操作,并创建了一个简单的 rake 任务rake sandbox:load,以允许设计人员轻松克隆和启动应用程序以测试他们的前端更改。

于 2013-08-07T10:50:39.527 回答
1

添加config/database.yml文件,然后运行 ​​rake 任务。查看以下不同环境的配置选项,它使用 sqlite,因此您需要根据您的要求和环境更新值:

# SQLite version 3.x
# gem install sqlite3
development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000
于 2013-08-07T10:52:14.960 回答