我有一个如下所示的文件结构:
/stylesheets
application.css.scss
home.css.scss
/office_listings
new.css.scss
index.css.scss
show.css.scss
/neighborhoods
show.css.scss
index.css.scss
等等。我的应用程序包含require_tree语句。我认为这会将我的所有CSS编译到application.css.scss文件中。但是当我访问本地主机上的页面并检查页面资源时,我不仅看到了我的application.css.scss文件,而且还看到了我所创建的所有其他CSS文件。我的javascript文件也是如此。
我尝试运行rake资产:清理并手动删除我公共文件夹中缓存的所有文件,以防万一资源有问题:我编译了几次预编译,但我仍然遇到同样的问题。
答案 0 :(得分:2)
如果您在development
环境中运行Rails应用程序(默认设置),则这是预期的行为。默认情况下,development
配置为config.assets.debug
设置为true
,这会导致所有资产文件单独提供以方便调试 - 浏览器的CSS检查器将显示规则发起的正确文件从而不是总是指向单个生成的单个。
但是,如果您在production
环境中预编译并运行应用程序,则只会生成并提供一个文件。您可以通过运行以下命令来测试它:
RAILS_ENV=production rake assets:precompile
RAILS_ENV=production rails server
如果您现在访问您的网站,您应该只会看到一个application.css
文件,其中包含所有样式表。 (确保您的config/environments/production.rb
文件包含config.serve_static_assets = true
- 否则,您将无法获得任何样式表,只会看到无格式的HTML。)
有关详情,请参阅Rails guide on the asset pipeline。
中的“关闭调试”部分答案 1 :(得分:1)
如果您config.assets.debug = true
config/environments/{environment}.rb
{environment}
可能development
,production
等config.assets.debug = false
,那么您的所有资产文件都将像您一样展开已经提到了。
将该行更改为application.css
,您只会看到application.js
和{{1}}。