如何解决Rails应用程序对环境感到困惑吗?
| 我创建了一个新的Ruby on Rails应用程序(我在Rails 3中使用的第一个应用程序),由于某种原因,我的应用程序似乎对应该在什么环境下运行感到困惑(除非我只是感到困惑) 。 当我运行rake db:create
时,它将同时创建\“ myapp_development \”和\“ myapp_test \”数据库。当我随后运行rake db:drop
时,它将删除开发数据库,但不删除测试数据库。
这是怎么回事?
编辑1:这是我的database.yml文件的样子:
development:
adapter: mysql
database: myapp_development
username: root
password:
# 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: mysql
database: myapp_test
username: root
password:
production:
adapter: mysql
database: myapp_production
username: root
password:
编辑2:尝试从头开始重新创建新应用,但仍然遇到相同的问题。这就是我所做的。
1.创建了一个新的Rails应用程序:
rails new myapp
2.编辑我的Gemfile:
source \'http://rubygems.org\'
gem \'rails\',\'3.0.6\'
gem \'mysql\',\'2.8.1\'
# Bundle the extra gems:
gem \'warden\',\'1.0.3\'
gem \'devise\',\'1.2.1\'
gem \'geokit\'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :development,:test do
gem \'ruby-debug\'
end
3.编辑我的database.yml:
development:
adapter: mysql
database: myapp_development
username: root
password:
host: localhost
# 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: mysql
database: myapp_test
username: root
password:
host: localhost
production:
adapter: mysql
database: myapp_production
username: root
password:
host: localhost
4.此时运行rake db:create
将同时创建myapp_development
和myapp_test
。如果我先运行rake db:drop
,然后再运行rake db:create
,则会收到命令行警告,指出“ myapp_test已经存在”,因为删除操作仅删除了myapp_development
,但是create尝试创建dev和test数据库。
解决方法
如果您运行
rake db:create:all
,而不运行rake db:create
,它将仅创建开发和测试数据库。后者只会创建一个或另一个,具体取决于您所使用的环境。
,检查你的
config/database.yml
应用中的文件进行数据库配置,但是您可能需要进行测试。但是database.yml可以让您访问所有内容。默认情况下,它将使用开发数据库,但是您可以指定何时使用生产
另请注意,如果不存在数据库,则只需运行rake db:migrate
即可创建数据库并迁移模型,您可能想使用它来代替
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。