Как запустить ресурсы: прекомпилировать с Rails в подкаталоге на Heroku? - PullRequest
2 голосов
/ 16 февраля 2012

У меня есть приложение rails в подкаталоге, опубликованное на heroku.

Gemfile
Gemfile.lock
Rakefile
config.ru
railshost/
  app/
  etc...
  • Если я запускаю его (локально) из базового файла Rakefile, assets:precompile:nondigest завершается неудачно с (nil)должна быть среда звездочек)

    undefined method 'each_logical_path' for nil:NilClass
    .../gems/actionpack-3.1.1/lib/sprockets/static_compiler.rb:18:in `compile'
    
  • Если я добавлю assets:precompile к компакт-диску до railshost, а затем выполню задачу, она не будет выполнена в Heroku, поскольку bin/node не можетбыть найден - это, кажется, относительный путь.

1 Ответ

0 голосов
/ 01 июня 2013

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

Rakefile

Прекомпиляция вызывает некоторые подзадачи.Мы должны обмануть его, чтобы поддерживать наши хаки.

ENV['RAILS_GROUPS'] = nil # trick asset rake file into shelling out

Rake должен работать в каталоге rails

task :railshost do
  cd 'railshost'
end

# this gets called by heroku
namespace :assets do
  task :precompile => [:railshost]

  namespace :precompile do
    task :nondigest => [:railshost]
  end
end

К сожалению, это нарушает путь к узлу Heroku

railshost/bin/node

#!/bin/sh
../bin/node $*

И, конечно, применимо все обычное: установить приложение для компиляции активов, обслуживания активов и т. Д.

...