#ruby-on-rails #heroku
#ruby-on-rails #heroku
Вопрос:
Я новичок в Heroku. Я попытался запустить простое тестовое приложение Rails 3.1.1 в Heroku. Единственными изменениями, которые я внес в него из «нового» шаблона приложения Rails, было создание домашнего контроллера и указание root на home#index
. Я также запустил
rails g scaffold Mark type:string start_time:datetime end_time:datetime subject:string measure:float special_event:boolean flag:boolean in_progress:boolean
чтобы я мог выполнить миграцию базы данных и протестировать, чтобы убедиться, что все отображается правильно. Последнее изменение, которое я внес, было в Gemfile, который теперь выглядит следующим образом:
source 'http://rubygems.org'
gem 'rails', '3.1.1'
group :development do
gem 'sqlite3'
end
group :production do
gem 'pg'
end
group :assets do
gem 'sass-rails', '~> 3.1.4'
gem 'coffee-rails', '~> 3.1.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
Для этого я следовал руководству Heroku. Нажатие сработало, сообщений об ошибках не поступало. Я запустил heroku rake db:migrate
heroku addons:add logging
. Я также удалил public/index.html
из приложения. Когда я запускаю приложение локально с rails server
, оно работает нормально. Я также могу вручную перейти к индексу «метки» в зависимости от каркаса.
Когда я запускаю heroku open
, все, что я получаю, это стандартная We're sorry, but something went wrong.
страница Rails. heroku logs
мне вообще ничего не показывает.
Что я здесь делаю не так? Это примерно так же просто, как и тестовые примеры, но я не могу заставить его работать после того, как возился с ним часами, создавая новые приложения, удаляя это приложение и повторяя попытку, пытаясь развернуть другое приложение и т.д.
Комментарии:
1. Неужели в логах heroku вообще ничего нет? Вы должны хотя бы видеть запросы, которые вы делаете.
2. Вообще ничего. Я набираю
heroku logs
, возникает пауза, а затем я вижу следующую командную строку.3. Я бы обратился в службу поддержки Heroku — здесь что-то не так.
4. Да, я, вероятно, сделаю это. Спасибо.
5. Причиной вашей проблемы, установленной
config.assets.enabled = false
в вашем application.rb, будет конвейер ресурсов, который включен по умолчанию.rb. Смотрите мой ответ ниже.
Ответ №1:
Проблема здесь в том, что конвейер ресурсов Rails 3.1 не работает «из коробки» на Bamboo-mri-1.9.2, который используется по умолчанию при выполнении heroku create
.
Решение состоит в том, чтобы сделать heroku create --stack cedar
, а затем нажать — тогда все будет хорошо 🙂
Комментарии:
1. обратите внимание, что при переходе на cedar нужно будет выполнить heroku run rake db:migrate. Ты получишь glowing-stone-9665.herokuapp.com/marks когда вы его запускаете.
2. Спасибо! Я понятия не имел, в чем проблема, и, возможно, никогда с этим не сталкивался.
Ответ №2:
Попробуйте сделать это просто для того, чтобы посмотреть, работает ли это:
rails new stackoverflow
cd stackoverflow/
git init
git add .
git commit -m 'all'
git remote add origin git@github.com:noahc/stackoverflow.git #you'll need to change this
git push origin master
heroku create
git push heroku master
heroku open
Если это не сработает, значит, это как-то связано с вашим локальным компьютером. Я только что пробежался по этому вопросу, и с моей стороны это работает. Смотрите: http://gentle-dawn-1050.heroku.com . Если это не приведет к сбою, я бы попробовал внести изменения в GemFile и посмотреть, сможете ли вы таким образом вывести его из строя.
Комментарии:
1. Хм… Это работает. Позвольте мне снова запустить мой Heroku acct и попробовать еще раз с ванильным приложением с миграцией.
2. Если я добавлю миграцию и запущу
heroku rake:db:migrate
, то миграция, похоже, пройдет хорошо.heroku open
однако снова показывает мне страницу «Мы сожалеем …». Мой файл gem не содержит ничего, кроме исходной строки по умолчанию,gem 'rails', '3.1.1'
иgem 'pg'
.pg
Не подходит ли gem для использования в качестве адаптера базы данных? Вот репозиторий:https://github.com/ccheaton/herokutest
Ответ №3:
У меня была такая же проблема. Похоже, вы добрались до сути своей проблемы, но для будущих проблемников я хочу указать, что это может быть несоответствие между базой данных, которую вы используете для своего локального приложения, и той, которая стоит за живым приложением. В моем случае моя локальная база данных была заполнена, а мой сайт Heroku был пуст, поскольку я не провел надлежащую миграцию.
Эта проблема стала очевидной только тогда, когда я запустил «rake db: reset» в терминале (чтобы очистить все данные в базе данных моего локального приложения), после чего я смог легко найти ошибки в своем коде.
Вывод: если информации в вашей базе данных ничтожно мало, я бы посоветовал очистить ее и устранить неполадки оттуда, потому что, возможно, на развернутом вами сайте просто еще нет данных, и, возможно, ваш код неправильно обрабатывает исключения такого рода…….