【发布时间】:2015-12-28 19:04:25
【问题描述】:
情况
我目前正在使用 Capybara 测试 Rails 应用程序。此外,我使用Guard 及其扩展名guard-livereload 来在相关源文件更改时自动重新加载我的浏览器。
由于 Capybara 的 save_and_open_page 方法没有正确显示样式表,我将 this solution 应用于该问题,其中临时视图转储 capybara.html 被放置在 /public/ 文件夹中以确保资产的可访问性.
现在,由于 LiveReload 在开发中的作用就像一个魅力,我想在功能测试期间使用它来自动重新加载 /public/capybara.html,而不是自己一遍又一遍地打开它。
问题
由于某种原因,我只能将负责重新加载页面的机架中间件插入到开发环境中的中间件堆栈中,而不是在测试环境中。我使用以下代码进行插入:
/config/environments/development.rb
Rails.application.configure do
config.middleware.insert_after ActionDispatch::Static, Rack::LiveReload
end
在/config/environments/test.rb中使用相同方法时,出现如下错误
myApp/config/environments/test.rb:44:in `block in <top (required)>': uninitialized constant Rack::LiveReload (NameError)
由于我对 Rails 还很陌生,所以我真的不知道从哪里开始。据我所知,尝试手动要求文件并不是真正的 Rails WayTM 。 那么,我该如何解决这个问题呢?
提前致谢。
【问题讨论】:
标签: ruby-on-rails capybara rack middleware livereload