Sass/Compass не компилируется с использованием Guard с настройкой Middleman

Я использую Mac OS X Mountain Lion и недавно установил Ruby через RVM. Затем я установил Middleman (http://middlemanapp.com/), который отлично работает. Я смог добавить параметры конфигурации и выполнить сборку проекта.

Мои проблемы возникают из-за попытки использовать Guard для компиляции Sass/Compass и связывания с LiveReload для автоматического обновления моего браузера.

Структура моего проекта Middleman выглядит следующим образом:

{имя-проекта}/сайт/источник

(источник — это папка Middleman, которая компилируется в папку «сборка» на том же уровне)

Мой gemfile/config.rb/guardfile находится здесь:

{имя проекта}/сайт/

Ниже перечислены мои Gemfile, Config.rb и Guardfile.

Gemfile:

# If you have OpenSSL installed, we recommend updating
# the following line to use "https"
source 'https://rubygems.org'

gem 'middleman', '~>3.0.12'
gem 'sass'                      
gem 'compass'
gem 'oily_png'
gem 'guard'
gem 'guard-compass'
gem 'guard-shell'             # Run shell commands.
gem 'guard-livereload'        # Browser reload.

gem 'rb-fsevent', :require => false     # Mac OSX

Congid.rb (также содержит некоторую конфигурацию для сборки Middleman, но не связан с Sass/Compass)

# Sass options:
# http://sass-lang.com/docs/yardoc/file.SASS_REFERENCE.html#options
sass_options = Hash.new

# Enable Sass inspection directly from the browser.
#
# Chrome Canary support (Applies to Webkit Nightlies as well.):
#   http://blog.q42.nl/post/35203391115/debug-sass-and-less-in-webkit-inspector-and-save-css-cha
# Firefox Extension:
#   https://addons.mozilla.org/en-US/firefox/addon/firesass-for-firebug
#
# Set to true to enable. Enabling will disable `line_comments`.
#
sass_options[:debug_info] = true

##
# Compass configuration:
# http://compass-style.org/help/tutorials/configuration-reference

# Development is the default environment. When compiling for production, this
# should be flagged as :production. This can be done through the command line
# with the following.
#
#   $ compass compile -e production --force
#

environment = :development

sass_dir    = 'source/sass'
css_dir     = 'source/css'
js_dir      = 'source/js'
images_dir  = 'source/img'
relative_assets = true
output_style    = (environment == :production ? :compressed : :expanded)

Защитный файл

# ~/.guardfile

# More info at https://github.com/guard/guard#readme

notification :off

puts "Using guard file for markweston project."

group :development do

  if File.exists?("./config.rb")
    # Compile on start.
    puts `compass compile --time --quiet`
    # https://github.com/guard/guard-compass
    guard :compass do
      watch(%r{(.*)\.s[ac]ss$})
    end
  end


  ## Look for specified files in the current and child directories.
  ## `find` requires Ruby 1.9 or greater.
  require 'find'
  if Find.find(Dir.pwd).detect{|dir|dir=~/.+\.(css|js|html?|php|inc|theme)$/}
    guard :livereload do
      watch(%r{.+\.(css|js|html?|php|inc|theme)$})
    end
  end

  # Uncomment block above and remove this if using Ruby 1.9 or greater.
  # https://github.com/guard/guard-livereload.
  # guard :livereload do
  #  watch(%r{.+\.(css|js|html?|php|inc|theme)$})
  # end

end

Я могу запустить «bundle exec guard», который работает, и когда я запускаю LiveReload в своем браузере, терминал сообщает мне, что браузер подключился.

Следует отметить, что я получаю эту ошибку после запуска «bundle exec guard»:

NoMethodError в строке ["264"] файла /Users/Mark/.rvm/gems/ruby-1.9.3-p385/gems/compass 0.12.2/lib/compass/configuration/inheritance.rb: активировать

Имея некоторую проблему, выясняя это, а в данный момент.

Основная проблема заключается в том, что когда я на самом деле пишу какой-либо Sass в одном из моих файлов .scss, хранящихся в моем каталоге sass, они не компилируются в .css в моем каталоге css. Терминал ничего не говорит, ничего не происходит. У меня что-то не так с моей конфигурацией, но я просто не могу понять, что.

Кто-нибудь может помочь, пожалуйста?

Спасибо,

Отметка.


person Mark Weston    schedule 03.04.2013    source источник
comment
@CraigColes включил ссылку на проект установки, который удобен, но стоит отметить, что сайт Middleman на самом деле построен на Middleman, поэтому его стоит использовать в качестве демонстрации: Руководства посредников, но этот пример сложнее, чем в другом примере.   -  person Mark Weston    schedule 09.04.2013


Ответы (2)


Мне повезло с middleman-livereload gem.

Кроме того, в Middleman встроены Compass и Sass, и вы можете значительно упростить это, запустив middleman server и посетив http://localhost:4567/ во время разработки, который позаботится о вашей предварительной обработке, а также запустите guard с live-reload для обновления браузера. Вам больше не нужно запускать команды compass watch или guard.

Мой гемфайл выглядит так:

gem "middleman", "~> 3.0.13"
gem "middleman-livereload"

Поэтому я настоятельно рекомендую использовать предписанный цикл разработки и не пытаться повторно включать Sass. и Compass, которые запекаются.

person bookcasey    schedule 03.04.2013

Мы собрали простую настройку проекта посредника. Не стесняйтесь использовать его: https://github.com/beef/beef-middleman

person CraigColes    schedule 05.04.2013
comment
Здоровья, ребята. У меня есть разные настройки для sass/compass, и я просто запутался в том, как на самом деле работает Middleman. Это скрывает от вас большую часть настроек, теперь у меня это работает. Я пометил @bookcasey правильно, потому что он добрался до этого первым. - person Mark Weston; 09.04.2013