【发布时间】: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 = :nested或config.sass.style = :expanded添加到production.rb并再次尝试3.2.6。
标签: ruby-on-rails ruby-on-rails-3 sass asset-pipeline sprockets