Как временно изменить путь вывода при прекомпиляции ресурсов, конвейер ресурсов Sprockets / Rails, 3.1.0 - PullRequest
6 голосов
/ 31 августа 2011

Я пытаюсь обновить этот код для работы с выпущенным Rails 3.1.0:

  # temporarily set the static assets location from public/assets to our spec directory
  ::Rails.application.assets.static_root = Rails.root.join("spec/javascripts/generated/assets")

  ::Rake.application['assets:clean'].invoke
  ::Rake.application['assets:precompile'].invoke

Теперь, когда Sprockets :: Environment # static_root был удален, каков наилучший способ временно изменить каталог вывода sprockets?

Редактировать: Также я хотел бы иметь возможность очистить ресурсы в моем пользовательском каталоге вывода:)

1 Ответ

1 голос
/ 02 сентября 2011

Вы можете использовать config.assets.prefix, но это все равно поместит ресурсы в общедоступный каталог (см. здесь для задачи rake, которая объединяет public_path и префикс).

В вашем случае это должно работать:

Rails.application.config.assets.prefix = "../spec/javascripts/generated/assets"
Rails.application.config.assets.manifest = File.join(Rails.public_path, config.assets.prefix)

Мне пришлось указать путь к манифесту из-за странного порядка загрузки звездочек railtie.Без этого он застревает на public/assets, который не существует и взрывает задачу рейка.YMMV.

Примечание: я сначала попробовал это в среде разработки, но config.assets.prefix отказался изменить.Я подозреваю, что установка config.assets.enabled на true исправила бы это, но я еще не удосужился протестировать его.

В качестве бонуса assets:clean прекрасно работает с этим решением (вы можете увидетьэто для себя в граблях )

...