#ruby-on-rails #reactjs #heroku #rake #procfile
#ruby-on-rails #reactjs #heroku #грабли #procfile
Вопрос:
Согласно документам здесь: https://blog.heroku.com/a-rock-solid-modern-web-stack#step-5-deploy-it-to-heroku , файл Procfile должен выглядеть примерно так:
web: bundle exec rails s
release: bin/rake db:migrate
Это должен быть файл procfile для приложения heroku, а не локальный, который запускается с двух серверов. Меня смущает бин / рейк. Ни одна из моих попыток создать что-то подобное этому файлу не сработала, и все они приводили к различным ошибкам.
Я не уверен, с чего начать задавать вопросы, но я начну с того, относится ли bin / rake к локальной файловой системе или файловой системе приложения heroku? Если локально, разве это не должно быть backend_folder/bin / rake?
Я также пробовал всевозможные варианты. Почему он не находит файл Rake, или говорит мне, что он не распознает команду bundle, или говорит, что нет такого файла или каталога, ссылающегося на db: migrate?
Я делаю все это неправильно, имея Rails в отдельной папке? Я думал, что стандартной практикой является наличие внутренней папки и папки внешнего интерфейса. Если да, то как справиться с необходимостью использования Gemfile и Gemfile.заблокировать корень? В настоящее время у меня настроены две папки, но в итоге я скопировал Gemfile в корень, чтобы заставить его работать. Это не может быть идеальным. Какие-либо указатели?
Ответ №1:
Взгляните на структуру проекта github, на который ссылается ссылка: https://github.com/heroku/list-of-ingredients
Приложение rails находится в корневом каталоге, а затем есть client
каталог, содержащий код react. Он начинается с index.html файл, на который затем ссылается ApplicationController в качестве резервного html.
Когда вы создаете приложение в heroku, вы увидите некоторую документацию по добавлению buildpack как для ruby, так и для nodejs. https://github.com/heroku/list-of-ingredients#getting-started. Это позволит сделать так, чтобы оно работало как приложение Rails в Heroku, но также скомпилирует JS, чтобы на него можно было ссылаться Rails.
Вы увидите, что в корневом каталоге также есть файл package.json, в котором определены сценарии, которые будут использоваться.