资产管道 - 麻烦让我的CSS活着

时间:2013-01-16 15:23:39

标签: ruby-on-rails ruby asset-pipeline spree

我目前在Ruby on Rails上遇到资产管道问题。

我正在使用电子商务解决方案(Spree),在文档中,文档中有以下内容:

  

[...]您可以通过使用特殊功能显着提高性能   预编译任务。

$ bundle exec rake assets:precompile:nondigest
  

在开发中使用预编译rake任务可以防止任何更改   资产文件在重新加载时自动包含在内   这页纸。您必须重新运行预编译任务才能进行更改   可用。

我的问题是,执行命令后,我的所有CSS都必须手动重新编译才能生效。我找不到这个“反向”命令​​。

我尝试删除公共/资产然后重新启动,但没有任何效果。

在我的 application.rb 中,我有一行资产:

config.assets.enabled = true

编辑:我的development.rb

Mystore::Application.configure do
  # Settings specified here will take precedence over those in config/application.rb

  # In the development environment your application's code is reloaded on
  # every request. This slows down response time but is perfect for development
  # since you don't have to restart the web server when you make code changes.
  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # Raise exception on mass assignment protection for Active Record models
  config.active_record.mass_assignment_sanitizer = :strict

  # Log the query plan for queries taking more than this (works
  # with SQLite, MySQL, and PostgreSQL)
  config.active_record.auto_explain_threshold_in_seconds = 0.5

  # Do not compress assets
  config.assets.compress = false

  # Expands the lines which load the assets
  config.assets.debug = true
end

如果有人有线索,我会打开(:

谢谢

5 个答案:

答案 0 :(得分:1)

通常你可以运行:

$ bundle exec rake RAILS_ENV=development assets:clean

这应该清除任何预编译的资产。听起来您处于开发模式,但如果您正在制作中,请删除RAILS_ENV=development部分。

答案 1 :(得分:1)

以防万一:你能检查一个名为manifest.yml的文件吗?它应该在您的/assets/目录中。如果存在,您可以看到里面有消化的名称。尝试评论或删除它们,我们会看到......

答案 2 :(得分:0)

希望您使用版本控制。键入“git diff”或等效文件,以准确查看可能导致应用程序出现这种新行为的文件更改。

答案 3 :(得分:0)

Erowlin,当您预编译资产时,您对CSS所做的任何更改都将 NOT 应用。这是因为它已经从application.css / application.js读取了所有资产被压缩到这两个文件中。

因此,如果您想对资产进行任何更改,则无法先对其进行预编译。

对于Spree,如果您正在处理不需要触及CSS / Javascript的代码,那么使用您提到的技术的好时机就是。

答案 4 :(得分:0)

刚刚发现了什么问题:

Spree将徽标图像的名称存储在数据库中。所以,rake tmp:clear不起作用。 CSS似乎没问题,立即应用了更改。

以下是回复: http://osdir.com/ml/spree-user/2012-12/msg00147.html

我不知道如果我必须向Spree报告这个错误,或者它不是一个。无论如何,这很奇怪。

谢谢你们所有人!