我目前在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
如果有人有线索,我会打开(:
谢谢
答案 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报告这个错误,或者它不是一个。无论如何,这很奇怪。
谢谢你们所有人!