Почему Heroku не видит файл, который я создаю после развертывания?

0

Я хочу настроить компиляцию и минимизацию активов в Yii, как это делает Rails. http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

Я подумывал использовать мини-маркер PHP. Я бы предпочел не вручную компилировать и проверять активы в Git. Однако, даже если это сработало, Heroku не появляется на сервере новые файлы, которые не находятся в Git. Зачем?

>heroku run bash
Running 'bash' attached to terminal... up, run.6857
~ $ cd web
cd web
~/web $ ls
ls
MySample.php  css          images          index.php  robots.txt
assets        favicon.ico  index-test.php  js
~/web $ echo hello > hello.txt
echo hello > hello.txt
~/web $ cat hello.txt
cat hello.txt
hello
~/web $ exit
exit
exit

$ curl -I http://xxxxxx.herokuapp.com/hello.txt
HTTP/1.1 404 Not Found
  • 0
    Я уже знаю, что Heroku использует временные файловые системы. Мне не нужно сохранять скомпилированные ресурсы, так как они могут быть сгенерированы по первому запросу.
Теги:
yii2
heroku
yii

1 ответ

1
Лучший ответ

Причина, по которой hello.txt не найдена, заключается в том, что ваш запрос curl -I будет обработан новым экземпляром вашего приложения. Чтобы продемонстрировать, я могу удалить свой index.php в bash, но когда я использую curl -I для его получения, я получаю 200 OK.

$ heroku run bash
Running 'bash' attached to terminal... up, run.3070
~ $ cd web
~/web $ ls                    
index.php
~/web $ rm index.php      
~/web $ ls
~/web $ curl -I http://xxxxx.herokuapp.com/index.php
HTTP/1.1 200 OK

Другой способ показать это, чтобы открыть два разных соединения bash, затем запустить heroku ps

$ heroku ps
=== run: one-off processes
run.3070 (1X): up 2015/04/01 19:30:07 (~ 37m ago): 'bash'
run.7783 (1X): up 2015/04/01 19:59:48 (~ 8m ago): 'bash'

Эти два процесса не собираются делиться эфемерной памятью.

  • 0
    О, heroku run создает новый экземпляр ... так что минимизация ресурсов через приложение и сохранение их во временную файловую систему все еще может работать, потому что они сохраняются на запущенном экземпляре.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню