4

シェルコマンドを呼び出さずにプロジェクトをコンパイルするために、rubyコードでコンパスを呼び出すにはどうすればよいですか?

Ruby(シェルではない)のCompassを使用してソリューションを適応させようとしましたが、成功しませんでした。私のプロジェクト構造は次のようになります

assets/scss               (location of uncompiled project files)
assets/css                (location for compiled css)
assets/compass/config.cfg (the compass config file)

私はこのようなことを試みました

fixed_options = {
  :project_path => '/path/to/assets,
  :sass_path => 'scss',
  :css_path => 'css'
}
Compass.add_project_configuration '/path/to/assets/compass/config.rb'
Compass.add_configuration fixed_options, 'custom'
Compass.compiler.run

これは機能しますがirb、プロジェクトルート内で実行して実行する場合に限り/path/to/assetsます。

fixed_options必要に応じてオプションをオーバーライドするように設定されているように見えconfig.rbます(またはそれらがマージされているか、2つのオプションセットがあります:私にはわかりにくいです)が、:project_pathコンパスは気にするだけなので、何もしないようです私が実行しているディレクトリについてirb

注:私はCompass.compilerinの出力を使用して、irb何が起こっているのかを理解しようとしています。

4

1 に答える 1

3

注: これは、シェルが関係しているため、希望する回答ではない可能性がありますが、シェルからコマンドを1 回実行し、その後アセットが変更されたときに再コンパイルされるため、希望する回答である可能性があります。たぶんそれで十分でしょう。

私がコンパスを実行する方法は、Guardファイルを使用することです。

これが私のGemfileの関連部分です(私はOSXを使用しています):

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem "sass"  # sassy CSS
  gem "coffee-script" # destroy javascript!
  gem "guard" # file watcher with rules
  gem "guard-coffeescript" # regen coffee
  gem "guard-sass", :require => false # auto generate sass
  gem "rb-fsevent"
  gem "growl" # notifications for OSX
end

コンパス構成ファイル:

# Set this to the root of your project when deployed:
http_path = "/"
css_dir = "public/css"
sass_dir = "views/stylesheets"
images_dir = "public/images"
javascripts_dir = "public/js"
project_type = :stand_alone
output_style = :compact
line_comments = false
preferred_syntax = "scss"

./ガードファイル内

# This will generate stuff:

guard 'coffeescript', :input => "coffee", :output => 'app/public/js'

guard 'sass', :input => 'app/views/stylesheets', :output => 'app/public/css', :compass => true, :style => "compressed", :shallow => true

次にguard start、ターミナルで実行すると、ファイルの変更を監視し、変更時に再コンパイルします。強制的に再コンパイルできるように、ターミナル ウィンドウをバックグラウンドで開いたままにします。YMMV。

于 2012-12-30T10:52:14.337 に答える