本文介绍了安装 RVM 后无法加载 Sass/Compass,以在 Symfony2 中与 Assetic 一起使用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用 Capifony,它需要 Capistrano,它需要 Ruby.但是我的 ruby​​ apt 版本很旧并且抛出语法错误.然后我安装了 RVM 并执行了以下操作:

I was trying to use Capifony, which requires Capistrano, which requires Ruby. But my apt version of ruby was old and was throwing syntax errors. So then I installed RVM and did this:

$ rvm use 1.9.3
$ rvm --rvmrc --create use 1.9.3@myapp
$ gem install sass [--pre]
$ gem install compass [--pre]
$ updatedb
$ locate sass | grep myapp | grep bin
$ locate compass | grep myapp | grep bin

将这些路径复制并粘贴到 config.yml

Copied and pasted those paths to config.yml

    sass:
        bin: /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/sass-3.2.0.alpha.277/bin/sass
        #apply_to: "\.scss$"
    compass:
        bin: /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/bin/compass
        apply_to: "\.scss$"

在切换到 RVM 之前,关于 Compass 和 Sass 的一切运行良好.Compass/Sass 似乎仍然可以在 app_dev.php 中工作,但是当我尝试转储用于生产的资产时它们会中断:

Everything about Compass and Sass worked fine before switching to RVM.Compass/Sass still seem to work from app_dev.php, but they break when I try to dump assets for production:

$ rm -r app/cache/ # this is how I delete cache, any other way give me errors, even before having this compass problem. This have always worked fine. I removed the * because this code block was interpreting it as a comment
$ php app/console assetic:dump --env=prod --no-debug
Dumping all prod assets.
Debug mode is off.

00:05:36 [file+] /home/www/dev/public/myapp/app/../web/css/fcd6640.css



  [Assetic\Exception\FilterException]
  An error occurred while running:
  '/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby' '/usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/bin/compass' 'compile' '/t
  mp' '--config' '/tmp/assetic_compassF1Mv7t' '--sass-dir' '' '--css-dir' '' '/tmp/assetic_compassKDoaEA.scss'

  Error Output:
  /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- sass (LoadError
  )
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/lib/compass/dependencies.rb:6:in `rescue in <top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/lib/compass/dependencies.rb:1:in `<top (required)>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/lib/compass.rb:5:in `block in <top (required)>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/lib/compass.rb:4:in `each'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/lib/compass.rb:4:in `<top (required)>'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/bin/compass:20:in `block in <main>'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/bin/compass:8:in `fallback_load_path'
    from /usr/local/rvm/gems/ruby-1.9.3-p194@myapp/gems/compass-0.13.alpha.0/bin/compass:19:in `<main>'


  Output:
  Unable to load Sass. Please install it with one of the following commands:
    gem install sass --pre


  Input:
  $main-color: red;

  body {
    color: $main-color;
  }

我遇到的另一个错误:

Error Output:
/usr/local/rvm/rubies/ruby-1.9.3-p194/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find compass (>= 0) amongst [big decimal-1.1.0, io-console-0.3, json-1.5.4, minitest-2.5.1, rake-0.9.2.2, rdoc-3.9.4] (Gem::LoadError)

相关:@mpapis @jamz 安装后 Sass 坏了RVM,使用 Assetic PHP

Related: @mpapis @jamz Sass broken after install with RVM, using Assetic PHP

我想添加更多标签:compass 和 sass.不确定是否可以以更高的分数完成.

I would like to add more tags: compass and sass. Not sure if can be done with higher score.

更新

我添加了一个这样的包装器:

I added a wrapper like this:

$ rvm wrapper ruby-1.9.3-p194@myapp php sass compass

再次编辑 config.yml,但现在我随机交替出现这些错误:

And edited config.yml again, but now I get these errors alternated, randomly:

错误 1:

[Assetic\Exception\FilterException]
  An error occurred while running: '/usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby' '/usr/local/rvm/bin/php_compass' 'compile' '/tmp' '--config' '/tmp/assetic_compass0Tmn8t' '--sass- dir' '' '--css-dir' '' '/tmp/assetic_compasssw2S3k.scss'

  Error Output: /usr/local/rvm/rubies/ruby-1.9.3-p194/bin/ruby: no Ruby script found in input (LoadError)
Input:
  $main-color: red;

  body     {
    color: $main-color;
  }

错误 2:

Error Output: /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.5/lib/bundler/shared_helpers.rb:22:in `default_gemfile': Could not locate Gemfile (Bundler::GemfileNotFound)
from /usr/local/rvm/gems/ruby-1.9.3-p194@global/gems/bundler-1.1.5/lib/bundler.rb:213:in `default_gemfile'

Compass 通过 app_dev.php 仍然可以正常工作

Compass still works fine through app_dev.php

推荐答案

解决方案

只需使用 lessphp.可以用 Composer 安装,然后在 config.yml 中:

Just use lessphp. It can be installed with Composer, and then in config.yml:

    lessphp:
         php: %kernel.root_dir%/../vendor/leafo/lessphp/lessc.inc.php
         apply_to: "\.less"

这篇关于安装 RVM 后无法加载 Sass/Compass,以在 Symfony2 中与 Assetic 一起使用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-22 17:54
查看更多