2

我目前在使用 Ruby on Rails 上的资产管道时遇到了一些问题。

我正在使用电子商务解决方案(Spree),在文档中,文档中有这个:

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

$ bundle exec rake assets:precompile:nondigest

在开发中使用 precompile 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

如果有人有线索,我很开放(:

谢谢

4

5 回答 5

1

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

于 2013-01-16T16:24:42.420 回答
1

通常你可以运行:

$ bundle exec rake RAILS_ENV=development assets:clean

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

于 2013-01-16T15:45:02.577 回答
0

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

于 2013-01-16T15:54:35.610 回答
0

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

因此,如果您想对资产进行任何更改,您不能先预编译它们。

对于 Spree,使用您提到的技术的好时机是,如果您正在编写不需要接触 CSS/Javascript 的代码。

于 2013-01-16T15:59:04.697 回答
0

刚刚发现有什么问题:

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

这是响应: http: //osdir.com/ml/spree-user/2012-12/msg00147.html

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

谢谢你们所有人!

于 2013-01-16T16:37:43.973 回答