【问题标题】:Asset Pipeline - Trouble to get my CSS alive资产管道 - 让我的 CSS 活跃起来的麻烦
【发布时间】:2013-01-16 15:23:38
【问题描述】:

我目前在使用 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

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

谢谢

【问题讨论】:

  • 你能粘贴你的development.rb吗?
  • 这是在 prod 还是 dev 环境中?在开发中,我认为您不需要预编译...虽然不确定 Spree - 它是通过 Rails 引擎安装的还是只是它自己的 web 应用程序?
  • 通常在预编译后,我会设置config.assets.debug = false。不过,不确定“我的所有 CSS 都必须手动重新编译”是什么意思。
  • 克里斯:我在开发环境中。不明白您所说的“已安装”是什么意思?本杰明:我试过了,没用。其他信息:当我重新启动服务器时,应用更改。
  • 而且,我的意思是我的更改没有应用,例如我编辑我的 toto.css,更改链接颜色,我必须重新启动服务器才能应用这些更改。

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


【解决方案1】:

通常你可以运行:

$ bundle exec rake RAILS_ENV=development assets:clean

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

【讨论】:

  • 完成:删除 public/assets 并没有帮助 =>,但是我的更改被应用了一次,然后又没有被应用。有关信息,我正在使用图像进行测试。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

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

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

      【讨论】:

      • 这正是我想要的,阻止我的应用程序编译一次。
      【解决方案5】:

      刚刚发现问题所在:

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

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

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

      谢谢大家!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-01
        • 2013-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多