Существует ли действующий Gemfile для Rails 3.1 вместе с Scss, Haml, Compass и HTML-Boilerplate в рабочем режиме? - PullRequest
4 голосов
/ 07 сентября 2011

У меня есть успешный проект Rails 3.0.x со следующим подмножеством Gems в Gemfile:

gem "compass"
gem "haml"
gem "haml-rails"
gem "html5-boilerplate"

Сегодня я попытался перейти на Rails 3.1 и сохранить всю функциональность, и у меня были многочисленные проблемы с этим. Я еще не нашел конфигурацию, которая бы работала для меня в производственном режиме, поэтому сейчас я работаю в режиме разработки.

Я следовал следующим советам:

  • «Обновление до Rails 3.1» от Railscast: очень хорошо, как обычно, и рассказал мне, как изменить production.rb, development.rb и application.rb, чтобы обновить конфигурацию для конвейера активов. Но не трогал компас, sass и html5-шаблон.
  • "Настроить html-шаблон с Rails 3.1" Он содержал наилучшее для меня решение, но не работает, потому что метод ie_html недоступен в производственном режиме. Изменение в Gemfile записано вниз
  • "Невозможно заставить Rails 3.1, Compass, Sass, Blueprint работать на Heroku Cedar" Это не сработало для меня вообще, у меня были проблемы с активами, скомпилированными тогда. Там была попытка сделать все глобальным, потому что существует зависимость между Compass и Html-Boilerplate, а Html-Boilerplate должен быть глобальным из-за метода ie_html.
  • Каждая попытка использовать только несколько самоцветов в блоке group :assets не увенчалась успехом. В большинстве случаев зависимость между, например, компас и sass, или компас и html5-шаблон не могут быть выполнены.

Итак, мой вопрос: есть ли работающий Gemfile, который позволяет использовать Haml, Sass, Compass, Html5-Boilerplate и, конечно, Rails 3.1 вместе?

Новый Gemfile работает в режиме разработки, но не в рабочем режиме:

gem "haml-rails"
group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass', '~> 0.12.alpha.0'
  gem "html5-boilerplate"
end
gem 'jquery-rails'

Я попытался создать новое приложение на Rails 3.1 и добавил туда ресурс изображения. Там все работает нормально, поэтому нет разницы между режимом разработки и режимом производства. В моем перенесенном приложении у меня теперь есть следующее состояние:

  • Хорошо работает в режиме разработки.
  • Отключите некоторые из html5-шаблонов, чтобы обойти проблемы на производстве.
  • Пока не находит предварительно скомпилированные изображения в производственном режиме.

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

Он работает на Heroku Cedar.

gem "rails", "~> 3.1.0"
gem 'sass-rails', "~> 3.1.0"

group :assets do
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
  gem 'compass', '~> 0.12.alpha.0'
  gem 'html5-boilerplate'
end

Но перед git push heroku сначала прекомпилируйте локально с помощью:

RAILS_ENV=production bundle exec rake assets:precompile

, затем добавьте все public / assets в ваш git-репо исовершить.Затем:

git push heroku master

Heroku обнаружит файл public/assets/manifest.yml и просто использует эти файлы.

Это работает для меня, поэтому должно работать!Приветствия

0 голосов
/ 31 декабря 2011

Сначала мои извинения за добавление еще одного ответа, но я думаю, что история полезна для других.

Я снова попытался (спасибо комментарию @theanym) создать новое приложение с rails 3.1.1, html5-шаблон, компас, sass и haml, и я нашел работающее решение для режима разработки и производства.

Вот шаги, которые я предпринял:

  1. Я начал с нового приложения и следовал там рецепту "Настройка html5-шаблон с Rails 3.1" .
  2. Когда я запускал приложение (в режиме разработки), оно работало хорошо.
  3. При запуске в производственном режиме я получил следующую ошибку:

    c:\apps\ruby\rails3\not>rails s -e production
    C:/apps/ruby/ruby192/lib/ruby/gems/1.9.1/gems/html5-boilerplate-1.0.0/lib/html5-boilerplate.rb:1:in `<top (required)>': 
      uninitialized constant Object::Compass (NameError)
        from C:/apps/ruby/ruby192/lib/ruby/gems/1.9.1/gems/bundler-1.0.21/lib/bundler/runtime.rb:68:in `require'
    
  4. Затем я изменил Gemfile (только соответствующую часть):

    group :assets do
      gem 'sass-rails',   '~> 3.1.4'
      gem 'coffee-rails', '~> 3.1.1'
      gem "compass", '~> 0.12.alpha.0', :group => :production
      gem 'html5-boilerplate', :group => :production
      gem 'uglifier', '>= 1.0.3'
    end
    

Для меня важной частью решения было обозначить для compass и html5-boilerplate этот дополнительный аргумент :group => :production.

Затем мне пришлось предварительно скомпилировать активы, и мне пришлось изменить style.scss на style.css.scss, но это был незначительный твик. Протестировал приложение как в режиме разработки, так и в рабочем режиме, и, похоже, ошибки нет.

0 голосов
/ 07 сентября 2011

Просто чтобы включить некоторую информацию, которая может помочь другим, вот моя текущая ситуация, которая работает (более или менее):

  • Я определил Gemfile как определено в вопросе.
  • Поэтому я должен был убедиться, что html5-шаблон является не используемым в производственном режиме.Я закомментировал части HTML-кода, которые мне не нужны.Я использую шаблоны html5-шаблонов (в основном), и приложение находится только на моем локальном ПК, поэтому прирост производительности с помощью, например, jquery от Google, не столь актуален для меня.
  • Решено: Проблемы сизображения в производственном режиме (см. одну проблему, которую я не мог решить в настоящее время на Как использовать опорные изображения в Sass при использовании Rails 3.1? , а Rails 3.1.0 - актив: прекомпиляция завершается неудачно при использованииasset_url () функция SASS , которая не решена в Rails 3.1.0)), где проблемы с конфигурацией из-за миграции приложения Rails 3.0.x на Rails 3.1.0.Я решил эту проблему, скопировав рабочую конфигурацию нового созданного приложения (в основном production.rb, которое содержало неправильную запись).

Я не буду тратить здесь больше времени и буду ждать обновлений для Rails 3.1.1 и html5-шаблон.

...