Я сделал базовое приложение rails с простым контроллером страниц с функцией индексации, и когда я загружаю страницу, я получаю:
ActionView::Template::Error (application.css isn't precompiled):
2: <html>
3: <head>
4: <title>Demo</title>
5: <%= stylesheet_link_tag "application" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400'
Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.0'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'execjs'
gem 'therubyracer'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', " ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
ruby-on-rails
asset-pipeline
Крис Мюнх
источник
источник
Ответы:
По умолчанию Rails предполагает, что ваши файлы предварительно скомпилированы в производственной среде, если вы хотите использовать живую компиляцию (скомпилировать ваши ресурсы во время выполнения) в рабочей среде, вы должны установить для config.assets.compile значение true .
Вы можете использовать эту опцию для возврата к Sprockets, когда вы используете предварительно скомпилированные ресурсы, но при этом отсутствуют какие-либо отсутствующие предварительно скомпилированные файлы.
Если для
config.assets.compile
параметра установлено значение false и отсутствуют предварительно скомпилированные файлы, вы получите «AssetNoPrecompiledError», указывающее имя отсутствующего файла.источник
application.rb
. Добавить / редактироватьapplication.rb
:config.assets.precompile += %w( first.css second.js )
. Теперь эти файлы также будут скомпилированы. Не добавляйте все файлы, если вы используете их только в звездочкахrequire
, но только если вы включаете их с<link>
/<script>
Вы получите более высокую производительность в производственной среде, если для config.assets.compile установить значение false в production.rb и предварительно скомпилировать свои ресурсы. Вы можете предварительно скомпилировать с помощью этой задачи:
Если вы используете Capistrano, версия 2.8.0 имеет рецепт, чтобы справиться с этим во время развертывания. Для получения дополнительной информации см. Раздел «В производстве» Руководства по конвейеру активов: http://guides.rubyonrails.org/asset_pipeline.html.
источник
rake -T
илиbundle exec rake -T
твой друг.bundle exec rake ...
гарантирует, что вы загружаете правильные грабли и связанные с ними зависимости для вашего приложения. Если вы не используете bundler, вы просто запуститеrake ...
.ОК, у меня была такая же проблема. Я не хотел использовать «config.assets.compile = true» - мне пришлось добавить все мои файлы .css в список в config / environment / production.rb:
Затем мне пришлось создать (а затем удалить) tmp / restart.txt
Я последовательно использовал помощник stylesheet_link_tag, поэтому нашел все дополнительные CSS-файлы, которые мне нужно было добавить:
источник
Быстрое решение для пользователя capistrano - поместить эту строку в Capfile.
источник
Для всех тех, кто читает это, но не имеет проблем
application.css
со своими пользовательскими классами CSS, напримерadmin.css
:base.css
и т. Д.Решение заключается в использовании, как указано
А в таблицах стилей ссылки просто ссылки
application.css
Поскольку конвейер ресурсов прекомпилирует все ваши таблицы стилей в application.css. Это также происходит при разработке, поэтому использование любых других ссылок некорректно при использовании конвейера ресурсов.
источник
У меня была точно такая же ошибка в моей среде разработки. В конце концов все, что мне нужно было сделать, чтобы это исправить, это добавить:
к моему файлу config / environment / development.rb, и это исправило это. Мой последний конфиг в разработке, связанный с активами, выглядит так:
источник
У меня также была эта проблема, при которой попытка запустить в рабочем режиме без предварительной компиляции все равно приводила к ошибкам без предварительной компиляции. Мне пришлось изменить, какая строка была прокомментирована application.rb:
источник
config/application.rb
Вот быстрое решение:
Если вы используете capistrano, сделайте это и добавьте это в ваш deploy.rb:
раскрытие крышки
источник
Сегодня я столкнулся с этим сообщением об ошибке и хотел опубликовать решение в моем конкретном случае. Оказывается, моя проблема заключалась в том, что в одном из моих css-файлов отсутствовала закрывающая скобка, и это приводило к тому, что файл не компилировался. Это может быть сложнее заметить, если у вас есть автоматизированный процесс, который настраивает все (включая прекомпиляцию ресурсов) для вашей производственной среды.
источник
После всего остального не удалось ...
Мое решение было изменить файл макета с
в
И это сработало! (Вы можете поместить файл сброса в манифест.)
источник
Еще один способ исправить это на Heroku: убедитесь, что ваш Rakefile зафиксирован и отправлен.
источник
На сервере heroku (файловая система только для чтения), если вы хотите компилировать css во время выполнения (это не рекомендуется, но вы можете это сделать), убедитесь, что вы выполнили настройки, как показано ниже -
источник
если вы думаете, что следовали всему хорошему, но все еще не повезло, просто убедитесь, что вы / capistrano запустили touch tmp / restart.txt или его эквивалент в конце. Я был в неудачном списке, но сейчас :)
источник
Вы, вероятно, есть
syntax error
в CSS, который вы используете.Запустите эту команду
Это даст исключение, исправит это, и все готово.
Спасибо
источник