【问题标题】:How to include SASS files using sass-rails gem with the Asset Pipeline in Rails 3.2.15? Operation not supported?如何在 Rails 3.2.15 中使用带有资产管道的 sass-rails gem 包含 SASS 文件?不支持操作?
【发布时间】:2013-11-08 17:10:24
【问题描述】:

我正在尝试找出为我的 (SASS) CSS 资产提供服务的最佳实践方式。我用谷歌搜索了又谷歌,现在我的脑子里糊涂了!

Rails 3.2.15

宝石文件:

# Asset pipeline
group :assets do
  gem 'sass-rails',   '3.2.6'
  gem 'coffee-rails', '3.2.2'
  gem 'uglifier',     '2.3.0'
end

production.rb

  # Disable Rails's static asset server (Apache or nginx will already do this)
  config.serve_static_assets = false

  # Compress JavaScripts and CSS
  config.assets.compress = true

  # Don't fallback to assets pipeline if a precompiled asset is missed
  config.assets.compile = false

  # Generate digests for assets URLs
  config.assets.digest = true

  # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
  config.assets.precompile += %w( *.js *.css )

  # Choose which compressors to use
  # config.assets.js_compressor  = :uglifier
  # config.assets.css_compressor = :scss

application.css.scss

/*
*= require data_tables
*= require data_tables_colvis
*= require styles
*= require jquery.ui.autocomplete
*= require jquery.ui.datepicker
*= require jquery.ui.slider
*= require timepicker
*= stub email
*= require_directory
*/

.ui-widget,
.ui-widget input,
.ui-widget select,
.ui-widget textarea,
.ui-widget button { font-family: inherit; font-size: inherit; }

注意,我require 中的一些文件在app/assets/stylesheets 中,而其他文件在vendor/assets/stylesheets

命令运行

rm -rf tmp/
rm -rf public/assets/
bundle exec rake assets:clean RAILS_ENV=production --trace
bundle exec rake assets:precompile RAILS_ENV=production --trace 

遇到错误

** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute assets:environment
** Invoke environment (first_time)
** Execute environment
** Invoke tmp:cache:clear (first_time)
** Execute tmp:cache:clear
** Execute assets:precompile:primary
rake aborted!
Operation not supported - (/media/shared/code/user/appname/tmp/cache/sass/21e55874b33b09754ee1326254c109e623619141/application.css.scssc20131108-41651-yzw3cr, /media/shared/code/user/appname/tmp/cache/sass/21e55874b33b09754ee1326254c109e623619141/application.css.scssc)
  (in /media/shared/code/user/appname/app/assets/stylesheets/application.css.scss)
/usr/lib/ruby/gems/1.9.1/gems/sass-3.2.12/lib/sass/util.rb:886:in `rename'
/usr/lib/ruby/gems/1.9.1/gems/sass-3.2.12/lib/sass/util.rb:886:in `atomic_create_and_write_file'

临时文件路径后面的c 对我来说似乎有点可疑?

有什么想法吗?这样做的“正确”方法是什么?

谢谢

【问题讨论】:

  • 根据上面的命令之一,您删除了 tmp 目录。您可能需要mkdir tmp/cache
  • 感谢您的回复,但我刚刚尝试创建文件夹并收到相同的错误消息:(
  • 尝试重命名文件时出错。部署用户可以写入 tmp 目录吗?是否创建了 sass 目录?此外,您在名称中看到的尾随 c 应该是 sass css 的编译版本。
  • 是的,因为它应该像我一样运行。我还尝试了sudo,但没有骰子。是的 tmp/cache/sass 已创建,子文件夹也是如此,但其中没有任何内容。值得注意的是,如果我降级到 sass-rails 3.2.5 - 一切似乎都正常吗?
  • 良好的通话恢复到 3.2.5。基于this commit,看起来他们将默认的 sass 样式更改为:compressed。您可以尝试将config.sass.style = :nestedconfig.sass.style = :expanded 添加到production.rb 并再次尝试3.2.6。

标签: ruby-on-rails ruby-on-rails-3 sass asset-pipeline sprockets


【解决方案1】:

恢复到sass-rails v3.2.5 似乎可以解决问题。

【讨论】:

    猜你喜欢
    • 2015-09-19
    • 2011-12-19
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 2011-12-02
    • 2011-09-03
    • 2014-07-18
    • 2014-08-24
    相关资源
    最近更新 更多