Няма такъв файл „config/database.yml“ на Heroku

Моето приложение е Ruby rack приложение. Когато моето приложение Heroku стартира, то се поврежда, защото

/app/config.ru:8:in `read': Няма такъв файл или директория - config/database.yml (Errno::ENOENT)

Защо това се случва? Разбрах, че Heroku е предназначен да създаде този файл https://devcenter.heroku.com/articles/cedar-migration

Идентификационните данни на базата данни ще продължат да бъдат конфигурирани автоматично: по време на компилиране на slug, config/database.yml, който анализира DATABASE_URL от средата, ще бъде записан в приложението.

Разочароващо, документът на https://devcenter.heroku.com/articles/ruby не обяснява около database.yml


person Colonel Panic    schedule 14.10.2012    source източник
comment
Очаквате/искате ли Heroku да създаде този файл? Ако е така, имате ли директория config във вашето приложение (с файл в нея, така че git да го ангажира)?   -  person matt    schedule 14.10.2012
comment
Благодаря Мат. Ангажирах моето собствено config/database.yml, сега Heroku го заменя със свое собствено. Странно. Какво ще стане, ако искам да запазя database.yml лично?   -  person Colonel Panic    schedule 15.10.2012


Отговори (2)


Добре, първото нещо - heroku не използва файл database.yml. По подразбиране приложението rails го зарежда автоматично от директория config/. И не е необходимо да го зареждате ръчно в config.ru. Ако искате да използвате в heroku PosgreSQL - просто добавете добавка. Heroku ще направи всички други неща, за да свърже вашето приложение и db. Ако искате да използвате външен MySQL сървър, трябва да използвате добавката на Amazon RDS

heroku addons:add amazon_rds url=mysql2://user:pass@dbhost/dbname

По този начин можете да използвате всеки db. Използвам GoDaddy mysql бази чрез добавката Amazon RDS.

Както и да е, проблемът във вашия config.ru 8-ми ред нещо подобно

read 'config/database.yml'

Изтрийте го и потърсете други начини, които не са в конфликт с heroku

Късмет

person Alexander Bochkarev    schedule 14.10.2012
comment
Моето приложение е vanilla Rack (Sinatra или Camping), а не Rails - person Colonel Panic; 14.10.2012
comment
ой съжалявам. Както и да е: Идентификационните данни на базата данни ще продължат да бъдат конфигурирани автоматично: по време на компилиране на slug, config/database.yml, който анализира DATABASE_URL от средата, ще бъде записан в приложението. Опитайте се да коментирате този низ и опитайте да започнете, преди да добавите към конфигурационните променливи на heroku с db име на хост потребител и пас - person Alexander Bochkarev; 14.10.2012
comment
както казах - heroku автоматично компилира файл за db connect. Няма нужда да го настройвате ръчно - person Alexander Bochkarev; 14.10.2012

Изглежда, че Heroku създава своя config/database.yml само ако имате папка config под контрол на източника. Не е обяснено в документи.

person Colonel Panic    schedule 14.10.2012
comment
Не мисля, че имате нужда от файла database.yml, само config dir. Ако няма нищо друго във вашата конфигурационна директория, опитайте да добавите празен .gitkeep файл, така че директорията да бъде прехвърлена към Heroku. - person matt; 15.10.2012