Ошибка Rails 500: «Мы сожалеем, но что-то пошло не так»

#ruby-on-rails #ruby #postgresql #sqlite #heroku

#ruby-on-rails #ruby #postgresql #sqlite #heroku

Вопрос:

После трех вечеров работы над этой проблемой и прочтения всех сообщений об этом, я должен наконец задать этот вопрос!

Я хочу развернуть самое простое приложение Rails для Heroku:

 rails new test_appli
cd test_appli
git init
git add .
git  commit -m "initial commit"
heroku create
git push heroku master
  

Все в порядке, приложение хорошо работает на Heroku. После этого я создам базу данных SQLite3:

 rails generate scaffold User name:string email:string
rake db:migrate
  

На локальном компьютере все в порядке. Я localhost:3000/users хорошо вижу. Затем я хочу поместить базу данных на Heroku. Сначала я изменяю свой Gemfile:

 group :production do
  gem 'pg'
end

group :development, :test do
  gem 'sqlite3'
end
  

Затем я отправляю все это на Heroku:

 git init
git add .
git  commit -m "with Database"
git push heroku master
heroku rake db:migrate
  

Тогда в пакете нет ошибок, все в порядке, база данных отправлена, но страница heroku.com/users выдает ошибку

Rails 500: «Мы сожалеем, но что-то пошло не так»

Я больше не знаю, что делать. Вы можете мне помочь?

Комментарии:

1. вы проверили свой файл журнала с помощью heroku logs из терминала?

2. конечно, это ничего не говорило… ответ ниже. Спасибо

Ответ №1:

Я подозреваю, что вы пытаетесь развернуть приложение Rails 3.1 в стеке bamboo (heroku create по умолчанию использует стек bamboo 1.9.2 и не запускает Rails 3.1 из коробки.). Стек Cedar намного лучше подходит для сайтов Rails 3.1 —

попробуйте

 heroku create --stack cedar
  

при создании вашего приложения на Heroku и повторной загрузке его. Также обратите внимание, что ваша команда rake в Heroku станет

 heroku run rake db:migrate
  

Ответ №2:

Выполните:

heroku запускает rake db:schema:load

У меня была такая же проблема. У меня это работает после того, как git нажимает heroku master

Ответ №3:

Не выполняйте инициализацию git во втором наборе команд — вам нужно инициализировать ваше репозиторий Git только один раз.

В остальном все выглядит нормально — вы где-нибудь видите какие-нибудь ошибки?

Комментарии:

1. Спасибо за вашу помощь. Проблема заключалась в версии rails со стеком. В rails 3 используется только stack cedar!

Ответ №4:

Почему вы используете pg gem в своей рабочей группе, а sqlite3 gem в своей группе разработки? Мне кажется, ваша проблема, скорее всего, связана с тем фактом, что вы разрабатываете базу данных, отличную от используемой в производственной среде. На вашем месте я бы придерживался одного, который значительно упростил бы отладку.

Если вы действительно хотите запустить приложение как можно скорее, просто запустите его в рабочей среде с помощью sqlite… Gemfile:

 gem 'rails'
gem 'sqlite3'
  

Кроме того, быстрый способ выяснить, в чем заключается ошибка, — это выполнить ее heroku logs из консоли unix.

Комментарии:

1. Привет, Heroku не может запустить sqlite3, но преобразовать DB в pg. Вы должны сделать это подобным образом в файле gemfile. Проблема заключалась в версии rails со стеком. В rails 3 используется только stack cedar!

2. На самом деле, Heroku может запускать sqlite3. У меня запущено приложение rails3 на Heroku, которое использует sqlite3. Мы используем этот стек: bamboo-ree-1.8.7.

Ответ №5:

Какая версия Rails? Можете ли вы попробовать создать приложение, работающее на Cedar stack?

 heroku create myapp --stack cedar
  

Учитывая, что приложение запущено на cedar, вам нужно немного изменить команды, например:

 heroku run rake db:migrate
  

В любом случае вам действительно нужно проверить свои журналы, потому что ваша проблема может быть связана даже не с базой данных, а с активами.

Ответ №6:

Добавлен ли у вас общий экземпляр базы данных heroku объемом 5 МБ? Когда вы создаете свое приложение heroku (на cedar), необязательно автоматически создается база данных.

 airlift:projects  $ heroku create --stack cedar testapp9
Creating testapp9... done, stack is cedar
http://testapp9.herokuapp.com/ | git@heroku.com:testapp9.git

airlift:projects  $ heroku addons --app testapp9 
logging:basic
releases:basic
  

Когда вы просматриваете конфигурацию heroku, вы ничего не получаете:

heroku config

 airlift:projects  $ heroku config --app testapp9
airlift:projects  $
  

Чтобы добавить базу данных:

дополнения heroku: добавить общую базу данных: 5 мб

 airlift:projects  $ heroku addons:add shared-database:5mb --app testapp9
-----> Adding shared-database:5mb to testapp9... done, v3 (free)
airlift:projects  $ heroku config
No app specified.
Run this command from an app folder or specify which app to use with --app <app name>
airlift:projects  $ heroku config --app testapp9
DATABASE_URL        => postgres://blah:blah@blah.compute-1.amazonaws.com/blah
SHARED_DATABASE_URL => postgres://blah:blah@blah.compute-1.amazonaws.com/blah
airlift:projects  $ 
  

Тогда вы сможете перенести свою базу данных.

Комментарии:

1. Здравствуйте, большое спасибо за вашу помощь. На самом деле, как сказал Джон Бейнон, мне пришлось перенести это в cedar stack только из-за версии rails. Это работает так! Но я действительно ценю вашу помощь! Спасибо

Ответ №7:

Привет, @ redronin спасибо, что помог мне найти способ подключиться к моей базе данных postgres на Heroku, однако, как новичку в Heroku и postgresql, мне пришлось перепроектировать, что такое «бла». Итак, я полагаю, что я бы разбил это, чтобы помочь другим, как вы помогли мне.

postgres://[пользователь]: [пароль] @[имя_сервера].compute-1.amazonaws.com /[база данных]