грабли активов: прекомпиляция не работает на героку - PullRequest
16 голосов
/ 20 марта 2012

Мой веб-сайт работал, и Heroku предварительно скомпилировал ресурсы и все остальное. Теперь, казалось бы, из ниоткуда, я начал получать rake aborted! stack level too deep при развертывании.

Удаление строки *= require_tree . из моего файла application.css, кажется, исправляет stack level too deep, но затем я получаю это:

Running: rake assets:precompile
(in /tmp/build_b8o2t4k8frce)
/usr/local/bin/ruby /tmp/build_b8o2t4k8frce/vendor/bundle/ruby/1.9.1/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets
(in /tmp/build_b8o2t4k8frce)

Все мои ссылки на изображения не работают (я использую image-url () в моем CSS-файле). В чем может быть проблема и как мне ее исправить?

Я использую стек кедра, и это мой гемфайл:

gem 'rails', '3.1.0'
gem 'rake', '0.8.7'
gem 'devise'

group :production do
  gem 'pg'
  gem 'thin'
end

group :assets do
  gem 'sass-rails', "  ~> 3.1.0"
  gem 'coffee-rails', "~> 3.1.0"
  gem 'uglifier'
end

А вот версии, используемые героку:

Using rake (0.8.7)
Using rails (3.1.0)
Using sass (3.1.15)
Using sass-rails (3.1.6)

Вот мой файл application.rb

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require *Rails.groups(:assets => %w(development test))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

module App
  class Application < Rails::Application

    # Enable the asset pipeline
    config.assets.enabled = true

    # Version of your assets, change this if you want to expire all your assets.
    config.assets.version = '1.0'
  end
end

А вот мой файл production.rb

# Full error reports are disabled and caching is turned on
config.consider_all_requests_local       = false
config.action_controller.perform_caching = true

# Enable Rails's static asset server (Apache or nginx will not need this)
config.serve_static_assets = true

# Set expire header of 30 days for static files
config.static_cache_control = "public, max-age=2592000"

# Allow JavaScript and CSS compression
config.assets.compress = true

# Compress JavaScript by removing whitespace, shortening variable names, ...
config.assets.js_compressor = :uglifier

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true

Ответы [ 3 ]

34 голосов
/ 21 марта 2012

У меня была похожая проблема, и я нашел ответ здесь: https://github.com/rails/sass-rails/issues/78. В основном, переход на sass-rails v3.1.4.Надеюсь, это поможет

1 голос
/ 20 марта 2012

Вы не должны были удалять это *= require tree . из application.css, потому что он загружает все ваши стили.просто добавьте его и настройте файл config/production.rb следующим образом:

config.assets.precompile = %w{application.js}

и запустите RAILS_ENV = ресурсы производственного рейка: прекомпилируйте

РЕДАКТИРОВАТЬ попробуйте использовать эту конфигурацию:

config.assets.digest  = true
0 голосов
/ 20 марта 2012

Очевидно sass перестал работать, и у меня кончилось терпение, поэтому я решил больше не использовать его. Вместо этого:

#theme.css.scss
background-image:image-url('image.png');

Теперь я просто использую файл erb:

#theme.css.erb
background-image:url(<%= asset_path 'image.png' %>);

Я просто потерял целый день из-за этого, и я понятия не имею, почему, потому что он работал нормально только вчера. Если кто-то знает, что вызвало это и как я могу снова использовать sass, пожалуйста, прокомментируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...