Как создать задачу «активы: предварительная компиляция»

Я получаю эту ошибку на своем рабочем сервере и не могу понять, почему. Это происходит при выполнении этой команды:

bundle exec rake assets:precompile RAILS_ENV=production

Я использую Rails 3.1.0.rc6.


person tybro0103    schedule 26.08.2011    source источник
comment
Это означает, что для вашего приложения нет задачи assets:precompile. Может быть, недостающий драгоценный камень или что-то в этом роде.   -  person rubish    schedule 26.08.2011
comment
что это будет за драгоценный камень? Я только что запустил gem install rails --pre, а затем rails new...   -  person tybro0103    schedule 26.08.2011
comment
Я не уверен, еще не использовал 3.1.   -  person rubish    schedule 26.08.2011
comment
Вы действительно используете упаковщик в производстве? Ваш рабочий сервер на Heroku?   -  person Jack Chu    schedule 27.08.2011
comment
@ Джек Чу Я просто пытаюсь скомпилировать активы. Нет, не хероку.   -  person tybro0103    schedule 29.08.2011
comment
Вы уверены, что у вас установлены звездочки? Кроме того, вам не нужен RAILS_ENV=production, эта конкретная задача всегда запускается как рабочая по умолчанию.   -  person Jack Chu    schedule 30.08.2011
comment
В моем случае мне просто нужно было добавить гем «sass-rails» в гемфайл. Может быть, это может помочь кому-то.   -  person Alessandro De Simone    schedule 08.03.2015


Ответы (5)


Скорее всего, это связано с тем, что ваш config/application.rb не требует rails/all (по умолчанию), но требует некоторых пользовательских настроек.

Чтобы решить эту проблему, добавьте в config/application.rb следующее:

require 'sprockets/railtie'
person Koraktor    schedule 31.08.2011
comment
Это обычная проблема для пользователей Mongoid, которые удаляют конфигурацию rails/all. - person Alexey Zakharov; 13.09.2011
comment
слава богу, кто-то это заметил, подтверждаю сказанное явление - person Nik So; 15.09.2011
comment
бинго. Я действительно монгоидный пользователь. - person tybro0103; 28.09.2011
comment
Итак.. У меня есть эта проблема, но проблема была не в этом. Требование звездочек/рельсов не отсутствовало в моей конфигурации. - person John Hinnegan; 15.11.2011
comment
Эта проблема была решена, но я получил новую ошибку в терминале: Sprockets::ArgumentError: для манифеста требуется имя выходного файла. - person Atchyut Nagabhairava; 21.09.2016
comment
Обратите внимание, что при создании проекта только для API Rails 5 с $ rails new my_api --api создается файл application.rb с закомментированной конкретной строкой. - person Pimentoso; 27.10.2016

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

добавить в Capfile (или deploy.rb)

load 'deploy/assets'

добавьте это в application.rb

require 'sprockets/railtie'
person engineerDave    schedule 07.08.2012
comment
У меня такая же проблема. но на рельсах 2. я добавил эти строки, но это не помогло (и не в application.rb, а в enviroment.rb) - person Elmor; 08.12.2012
comment
Это исправило это для меня на Thin + Rails 3.2 с Mongodb. Спасибо!! - person Nick Ryberg; 25.01.2014

Я думаю, что это может быть потому, что вам не нужны драгоценные камни активов в производстве. По умолчанию rails ожидает, что вы предварительно скомпилируете свои активы в рабочей среде. Измените это в config/application.rb:

Закомментируйте эту строку:

Bundler.require *Rails.groups(:assets => %w(тест разработки))

И раскомментируйте эту строку:

Bundler.require(:default, :assets, Rails.env)

person Daniel Hoey    schedule 02.09.2011
comment
Я не монгоидный пользователь, как упоминается в комментариях в принятом в настоящее время ответе. В моем случае у меня была отдельная среда только для предварительной компиляции ресурсов, и ошибка исчезла, как только я добавил новую среду в список, упомянутый в этом ответе. - person ErJab; 08.08.2013
comment
У меня было очень старое приложение (2008 г.), в котором даже не было звездочек, так что это ответ, который мне был нужен. По умолчанию Cap ожидает предварительной компиляции конвейера ресурсов, но, поскольку конвейера ресурсов нет, он терпит неудачу. - person Josh from Qaribou; 20.10.2016

Я запускал эту команду — по привычке — в корне приложения только для API, у которого, конечно, нет ресурсов.

person Niek    schedule 24.07.2018
comment
Ой. спасибо, это спасло меня. Мое приложение также было приложением только для API. - person Promise Preston; 22.03.2020

Это странно. Вы всегда можете попробовать добавить

load "sprockets/assets.rake"

в ваш Rakefile. Он должен быть включен в пакет действий.

Мой Rakefile содержит:

require File.expand_path('../config/application', __FILE__)
Qnm::Application.load_tasks
person qnm    schedule 30.08.2011