我在资产管道方面遇到以下问题。
这显然适用于所有预编译资产。
在我看来,突然测试不再可靠。有没有办法避免这种情况再次发生?
答案 0 :(得分:13)
我从自己的案例中找到了完美的解决方案。如果你设置
config.assets.compile = false
config.assets.digest = true
在测试环境中,您的测试将依赖于预编译资产。
由于在快速开发和测试阶段每次预编译资产都很烦人,在我的情况下,仅在CI上进行此配置就足够了。
您可以使用以下命令设置名为ci_config.rb的初始值设定项:
if ENV['CI']
class YourApp::Application
config.assets.compile = false
config.assets.digest = true
end
end
并配置CI运行rake资产:启动时预编译和rake资产:清理结束。
答案 1 :(得分:2)
比较application.rb,production.rb和development.rb中的默认配置选项,并阅读Configuring Rails Applications in Ruby on Rails Guide以了解选项。
重要选项如下:
config.serve_static_assets
:将此设置为false(默认生产),然后,rails将不会提供静态内容。
config.assets.compile
:是否需要使用资产管道编译资产进行编译。
如果将以上两个选项设置为false
(这是生产的默认选项),那么您需要1)预编译并将静态内容放置在适当的位置,2)配置Web服务器(apache或nginx,可能是)根据需要提供静态内容。
因此,对于生产,您不仅需要放置文件,还需要配置Web服务器来为它们提供服务,或者您可以配置serve_static_assets
以即时创建资产。您可能需要调整测试配置,但测试serve_static_assets
为真,除非您更改它。