我正在学习 Hartl 的 Ruby on Rails 教程,偶然发现了一个与开发和测试环境的运行方式不同有关的问题。
简单地说,两个环境不同步。开发环境似乎正常工作,但正在进行的一些更改并未传播到测试环境。
例如,在 application.html.erb 中进行编辑将导致在测试环境中复制该更改。但是,对 _header.html.erb 进行更改不会。这就是我注意到问题的方式 - 测试是否存在指向标题的新链接失败,而我在浏览器中(在开发环境中)盯着它们。
在试图解决这个问题时,我发现了另一个怪癖:如果我在测试环境中使用 运行本地服务器rails server --environment test
,并启动浏览器,应用程序仍然是“固定的”。我的意思是,对应用程序代码或 HTML/CSS 文件所做的任何更改都不会在浏览器中复制。为了查看任何更改,必须关闭本地服务器,然后重新打开。然后,这会加载测试环境,其中包含可见的更改。
这两个环境数据库是相同的(我已经运行rake db:migrate
并rake db:test:prepare
在整个教程中添加迁移,并通过 sqlite 3 查看器确认数据库是相同的)。
我想这个问题源于我对 Rails 环境的一些基本误解 - 任何帮助将不胜感激。
为了完整起见,当我第一次注意到这个问题时,我正在完成第 8 章(添加登录/注销身份验证)。