【问题标题】:Why are assets not precompiling with RAILS_ENV set?为什么没有设置 RAILS_ENV 预编译资产?
【发布时间】:2015-12-22 11:22:30
【问题描述】:

我几乎浏览了网络上的每篇文章来解决这个问题,但到目前为止没有任何帮助。 这是正在发生的事情。

我使用 capistrano 来部署我的应用程序,直到昨天一切正常。无论如何,我都无法预编译我的资产。

所以,当我在 prod 服务器上本地执行 rake assets:precompile 以检查资产是否完全被预编译时,一切正常。

但是,当我执行RAILS_ENV=production rake assets:precompile 时,它失败了。我尝试了不同的环境,但除了省略 RAILS_ENV 之外没有任何结果。我面临的问题是我的最新更改没有反映在生产中。

这是错误的痕迹

I, [2015-09-24T23:39:05.138170 #6733]  INFO -- : Writing  /home/pamio/dev/rails_apps/remote/valutme- storefront/public/assets/high_voltage/pages- 77d20ed7f226268c100e527b51cf0830.js
I, [2015-09-24T23:39:05.232937 #6733]  INFO -- : Writing /home/pamio/dev/rails_apps/remote/valutme-storefront/public/assets/home-77d20ed7f226268c100e527b51cf0830.js
I, [2015-09-24T23:39:05.458718 #6733]  INFO -- : Writing 
 ......................
rake aborted!
Sass::SyntaxError: Invalid CSS after "...content: "\f105": expected " {", was "";"
(in /home/pamio/dev/rails_apps/remote/valutme- storefront/app/assets/stylesheets/admin.css.erb)
(sass):9628
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass- 3.4.10/lib/sass/scss/parser.rb:1165:in `expected'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:1101:in `expected'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:1096:in `tok!'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:641:in `block'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:711:in `declaration_or_ruleset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:661:in `block_child'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:653:in `block_contents'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:642:in `block'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:635:in `ruleset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:660:in `block_child'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:653:in `block_contents'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:117:in `stylesheet'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/scss/parser.rb:42:in `parse'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/engine.rb:393:in `_to_tree'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sass-3.4.10/lib/sass/engine.rb:268:in `render'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/sass_compressor.rb:24:in `evaluate'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/tilt-1.4.1/lib/tilt/template.rb:103:in `render'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/context.rb:197:in `block in evaluate'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets- 2.12.3/lib/sprockets/context.rb:194:in `each'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/context.rb:194:in `evaluate'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/bundled_asset.rb:25:in `initialize'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/base.rb:377:in `new'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/base.rb:377:in `build_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/index.rb:94:in `block in build_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/caching.rb:58:in `cache_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/index.rb:93:in `build_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/base.rb:287:in `find_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/index.rb:61:in `find_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:211:in `block in find_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:257:in `benchmark'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:210:in `find_asset'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:119:in `block in compile'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:118:in `each'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/sprockets/manifest.rb:118:in `compile'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:60:in `block (3 levels) in define'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-2.12.3/lib/rake/sprocketstask.rb:146:in `with_logger'
/home/pamio/.rvm/gems/ruby-2.1.1/gems/sprockets-rails-2.0.1/lib/sprockets/rails/task.rb:59:in `block (2 levels) in define'
/home/pamio/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `eval'
/home/pamio/.rvm/gems/ruby-2.1.1/bin/ruby_executable_hooks:15:in `<main>'
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)

另外,rake assets:precompile 的默认 rails 环境是什么?如果默认是生产,那么在提供显式环境参数时它也应该工作。

谁能告诉我发生了什么?

提前致谢。

【问题讨论】:

  • 您在 storefront/app/assets/stylesheets/admin.css.erb 中有一个 sass 语法错误。此外,在您的开发环境中本地编译资产比为生产预编译时更加宽容。检查语法错误!
  • RAILS_ENV 的默认值为 development。尝试在您的开发机器上以production 模式在本地编译它们。
  • 好吧,我已经使用相同的 css 文件很久了,我从来没有遇到过任何问题。正如我所说,它从昨天开始出现。 @moeabdol 原谅是什么意思?它不检查本地语法错误吗?另外仅供参考,当我将环境设置为开发时在本地运行它仍然失败并出现相同的错误。但是,当没有提供问题中提到的参数时,效果很好。
  • @AlexeyShein 我已经尝试过了。痕迹就是那个结果。您可以在我的问题中看到回溯
  • admin.css.erb 的那一行是否有错误?顺便说一句,您最近是否将项目移至新文件夹?我可以看到您的项目路径包含一个空格(valutme- storefront),这也可能会导致一些问题。

标签: ruby-on-rails ruby ruby-on-rails-4 sass


【解决方案1】:

你试过跑步吗:

rake assets:clean RAILS_ENV=production    
rake assets:clobber RAILS_ENV=production

?

【讨论】:

  • 这不是答案!这应该放在 cmets 中。是的,我已经尝试过了!
猜你喜欢
  • 2015-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 2013-03-15
相关资源
最近更新 更多