#ruby-on-rails #ruby #postgresql #heroku #sqlite3-ruby
#ruby-on-rails #ruby #postgresql #heroku #sqlite3-ruby
Вопрос:
Я следую руководству по http://onemonth.com где я создал свое приложение rails. Меня попросили использовать Heroku, чтобы мое приложение работало онлайн. Я выполнил шаги по привязке моей учетной записи Github к Heroku с помощью SSH-ключа. Однако, когда я использую команду heroku create
, а затем копирую указанную ссылку, в этом случае http://young-peak-7631.herokuapp.com /, я получаю сообщение «Ошибка приложения» в браузере.
Это точное сообщение:
«В приложении произошла ошибка, и ваша страница не может быть обработана. Пожалуйста, повторите попытку через несколько минут.Если вы являетесь владельцем приложения, проверьте свои журналы для получения подробной информации. «
Смотрите Изображение страницы ошибок Heroku ниже
, вот мои журналы:
2014-07-01T06:50:55.157229 00:00 app[web.1]: Rendered layouts/_header.html.erb (0.7ms)
2014-07-01T06:50:56.211672 00:00 heroku[router]: at=info method=GET path="/about" host=omr-photoshare.herokuapp.com request_id=0b8e9a43-5ffd-4bae-aa4f-61e9f87dfdfc fwd="65.78.4.236" dyno=web.1 connect=2ms service=192ms status=304 bytes=845
2014-07-01T06:50:56.025883 00:00 app[web.1]: Started GET "/about" for 65.78.4.236 at 2014-07-01 06:50:56 0000
2014-07-01T06:50:56.082614 00:00 app[web.1]: Rendered pages/about.html.erb within layouts/application (0.2ms)
2014-07-01T06:50:56.174581 00:00 app[web.1]: Completed 200 OK in 95ms (Views: 7.0ms | ActiveRecord: 86.8ms)
2014-07-01T06:50:56.079586 00:00 app[web.1]: Processing by PagesController#about as HTML
2014-07-01T06:50:56.173874 00:00 app[web.1]: Rendered layouts/_header.html.erb (90.3ms)
2014-07-01T06:50:57.026362 00:00 heroku[router]: at=info method=GET path="/users/edit" host=omr-photoshare.herokuapp.com request_id=9e7dbd9b-1e90-4cf0-b422-a39fc4dd86af fwd="65.78.4.236" dyno=web.1 connect=4ms service=26ms status=200 bytes=4509
2014-07-01T06:50:57.023820 00:00 app[web.1]: Rendered devise/registrations/edit.html.erb within layouts/application (6.5ms)
2014-07-01T06:50:57.007189 00:00 app[web.1]: Started GET "/users/edit" for 65.78.4.236 at 2014-07-01 06:50:57 0000
2014-07-01T06:50:57.027133 00:00 app[web.1]: Completed 200 OK in 16ms (Views: 12.8ms | ActiveRecord: 1.3ms)
2014-07-01T06:50:57.010704 00:00 app[web.1]: Processing by Devise::RegistrationsController#edit as HTML
2014-07-01T06:50:57.026562 00:00 app[web.1]: Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:50:58.037348 00:00 heroku[router]: at=info method=POST path="/users/sign_out" host=omr-photoshare.herokuapp.com request_id=62ed2279-f63e-4c4f-9721-7b1361348276 fwd="65.78.4.236" dyno=web.1 connect=32ms service=41ms status=302 bytes=931
2014-07-01T06:50:58.138958 00:00 heroku[router]: at=info method=GET path="/" host=omr-photoshare.herokuapp.com request_id=d36b09ab-feb9-4e13-8b07-97bda734f4cd fwd="65.78.4.236" dyno=web.1 connect=1ms service=72ms status=200 bytes=2809
2014-07-01T06:50:58.004542 00:00 app[web.1]: Started DELETE "/users/sign_out" for 65.78.4.236 at 2014-07-01 06:50:58 0000
2014-07-01T06:50:58.034982 00:00 app[web.1]: Completed 302 Found in 25ms (ActiveRecord: 12.2ms)
2014-07-01T06:50:58.119933 00:00 app[web.1]: Processing by PagesController#home as HTML
2014-07-01T06:50:58.137550 00:00 app[web.1]: Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:50:58.009338 00:00 app[web.1]: Processing by Devise::SessionsController#destroy as HTML
2014-07-01T06:50:58.116047 00:00 app[web.1]: Started GET "/" for 65.78.4.236 at 2014-07-01 06:50:58 0000
2014-07-01T06:50:58.009357 00:00 app[web.1]: Parameters: {"authenticity_token"=>"5AnEyKY75EbCUcrc50OZjx2MOguNlKFceSaDg5DoFzw="}
2014-07-01T06:50:58.136033 00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (14.2ms)
2014-07-01T06:50:58.034741 00:00 app[web.1]: Redirected to http://omr-photoshare.herokuapp.com/
2014-07-01T06:50:58.138057 00:00 app[web.1]: Completed 200 OK in 18ms (Views: 16.7ms | ActiveRecord: 0.0ms)
2014-07-01T06:51:00.169842 00:00 heroku[router]: at=info method=GET path="/users/sign_in" host=omr-photoshare.herokuapp.com request_id=102f1369-f2c7-4c60-95fd-fdcf94c91f3b fwd="65.78.4.236" dyno=web.1 connect=1ms service=95ms status=200 bytes=3735
2014-07-01T06:51:00.148527 00:00 app[web.1]: Started GET "/users/sign_in" for 65.78.4.236 at 2014-07-01 06:51:00 0000
2014-07-01T06:51:00.163967 00:00 app[web.1]: Rendered devise/shared/_links.erb (1.7ms)
2014-07-01T06:51:00.164009 00:00 app[web.1]: Rendered devise/sessions/new.html.erb within layouts/application (6.6ms)
2014-07-01T06:51:00.165306 00:00 app[web.1]: Rendered layouts/_header.html.erb (0.7ms)
2014-07-01T06:51:00.152352 00:00 app[web.1]: Processing by Devise::SessionsController#new as HTML
2014-07-01T06:51:00.165745 00:00 app[web.1]: Completed 200 OK in 13ms (Views: 10.2ms | ActiveRecord: 0.0ms)
2014-07-01T06:51:01.519186 00:00 heroku[router]: at=info method=POST path="/users/sign_in" host=omr-photoshare.herokuapp.com request_id=2e71a5f1-e10a-4158-af5c-6f80f8aac4a3 fwd="65.78.4.236" dyno=web.1 connect=9ms service=144ms status=302 bytes=1041
2014-07-01T06:51:01.575579 00:00 heroku[router]: at=info method=GET path="/" host=omr-photoshare.herokuapp.com request_id=304d9c4f-d607-4f37-aa75-bf07c48ace45 fwd="65.78.4.236" dyno=web.1 connect=3ms service=25ms status=200 bytes=2911
2014-07-01T06:51:01.571496 00:00 app[web.1]: Processing by PagesController#home as HTML
2014-07-01T06:51:01.518046 00:00 app[web.1]: Completed 302 Found in 133ms (ActiveRecord: 12.5ms)
2014-07-01T06:51:01.381342 00:00 app[web.1]: Started POST "/users/sign_in" for 65.78.4.236 at 2014-07-01 06:51:01 0000
2014-07-01T06:51:01.576450 00:00 app[web.1]: Rendered layouts/_header.html.erb (0.5ms)
2014-07-01T06:51:01.384466 00:00 app[web.1]: Processing by Devise::SessionsController#create as HTML
2014-07-01T06:51:01.384511 00:00 app[web.1]: Parameters: {"utf8"=>"✓", "authenticity_token"=>" 8dZCduvFyzofV4G28jmxjsOXYrweHJ cdJe3lEWPTQ=", "user"=>{"email"=>"cghazanfar10@gmail.com", "password"=>"[FILTERED]", "remember_me"=>"0"}, "commit"=>"Sign in"}
2014-07-01T06:51:01.517874 00:00 app[web.1]: Redirected to http://omr-photoshare.herokuapp.com/
2014-07-01T06:51:01.568980 00:00 app[web.1]: Started GET "/" for 65.78.4.236 at 2014-07-01 06:51:01 0000
2014-07-01T06:51:01.575119 00:00 app[web.1]: Rendered pages/home.html.erb within layouts/application (2.4ms)
2014-07-01T06:51:01.576943 00:00 app[web.1]: Completed 200 OK in 5ms (Views: 3.1ms | ActiveRecord: 1.4ms)
2014-07-01T07:53:44.045215 00:00 heroku[web.1]: State changed from up to down
2014-07-01T07:53:44.044809 00:00 heroku[web.1]: Idling
2014-07-01T07:53:47.433692 00:00 app[web.1]: [2014-07-01 07:53:47] FATAL SignalException: SIGTERM
2014-07-01T07:53:47.433697 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `select'
2014-07-01T07:53:47.433700 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `block in start'
2014-07-01T07:53:47.433702 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:in `start'
2014-07-01T07:53:47.433704 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in `start'
2014-07-01T07:53:47.433753 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run'
2014-07-01T07:53:47.433755 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
2014-07-01T07:53:47.433757 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/server.rb:69:in `start'
2014-07-01T07:53:47.433758 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in server'
2014-07-01T07:53:47.433760 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
2014-07-01T07:53:47.433761 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
2014-07-01T07:53:47.433763 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
2014-07-01T07:53:47.433764 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
2014-07-01T07:53:47.433766 00:00 app[web.1]: bin/rails:8:in `require'
2014-07-01T07:53:47.433767 00:00 app[web.1]: bin/rails:8:in `<main>'
2014-07-01T07:53:47.433773 00:00 app[web.1]: [2014-07-01 07:53:47] INFO going to shutdown ...
2014-07-01T07:53:47.433817 00:00 app[web.1]: [2014-07-01 07:53:47] INFO WEBrick::HTTPServer#start done.
2014-07-01T07:53:47.433890 00:00 app[web.1]: Exiting
2014-07-01T07:53:49.611381 00:00 heroku[web.1]: Process exited with status 143
2014-07-01T07:53:46.855962 00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-07-01T15:33:01.545336 00:00 heroku[web.1]: Unidling
2014-07-01T15:33:01.545628 00:00 heroku[web.1]: State changed from down to starting
2014-07-01T15:33:08.727524 00:00 app[web.1]: [2014-07-01 15:33:08] INFO WEBrick 1.3.1
2014-07-01T15:33:08.727547 00:00 app[web.1]: [2014-07-01 15:33:08] INFO ruby 2.0.0 (2014-05-08) [x86_64-linux]
2014-07-01T15:33:08.727961 00:00 app[web.1]: [2014-07-01 15:33:08] INFO WEBrick::HTTPServer#start: pid=2 port=36532
2014-07-01T15:33:04.638475 00:00 heroku[web.1]: Starting process with command `bin/rails server -p 36532 -e production`
2014-07-01T15:33:09.317544 00:00 heroku[web.1]: State changed from starting to up
2014-07-01T15:33:10.624767 00:00 heroku[router]: at=info method=GET path="/favicon.ico" host=omr-photoshare.herokuapp.com request_id=10c1d02a-1e17-4a48-9838-c35c2d530b52 fwd="66.249.83.39" dyno=web.1 connect=4ms service=8ms status=200 bytes=228
2014-07-01T16:38:20.572132 00:00 heroku[web.1]: State changed from up to down
2014-07-01T16:38:20.571809 00:00 heroku[web.1]: Idling
2014-07-01T16:38:25.614240 00:00 app[web.1]: [2014-07-01 16:38:25] FATAL SignalException: SIGTERM
2014-07-01T16:38:25.614249 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `select'
2014-07-01T16:38:25.614252 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:170:in `block in start'
2014-07-01T16:38:25.614254 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:32:in `start'
2014-07-01T16:38:25.614255 00:00 app[web.1]: /app/vendor/ruby-2.0.0/lib/ruby/2.0.0/webrick/server.rb:160:in `start'
2014-07-01T16:38:25.614257 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/handler/webrick.rb:14:in `run'
2014-07-01T16:38:25.614260 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/server.rb:69:in `start'
2014-07-01T16:38:25.614258 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/rack-1.5.2/lib/rack/server.rb:264:in `start'
2014-07-01T16:38:25.614262 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:81:in `block in server'
2014-07-01T16:38:25.614268 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands.rb:17:in `<top (required)>'
2014-07-01T16:38:25.614263 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `tap'
2014-07-01T16:38:25.614342 00:00 app[web.1]: [2014-07-01 16:38:25] INFO going to shutdown ...
2014-07-01T16:38:25.614455 00:00 app[web.1]: => Ctrl-C to shutdown server
2014-07-01T16:38:25.614272 00:00 app[web.1]: bin/rails:8:in `<main>'
2014-07-01T16:38:25.614452 00:00 app[web.1]: => Run `rails server -h` for more startup options
2014-07-01T16:38:25.614265 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:76:in `server'
2014-07-01T16:38:25.614266 00:00 app[web.1]: /app/vendor/bundle/ruby/2.0.0/gems/railties-4.1.1/lib/rails/commands/commands_tasks.rb:40:in `run_command!'
2014-07-01T16:38:25.614270 00:00 app[web.1]: bin/rails:8:in `require'
2014-07-01T16:38:25.614406 00:00 app[web.1]: [2014-07-01 16:38:25] INFO WEBrick::HTTPServer#start done.
2014-07-01T16:38:25.614450 00:00 app[web.1]: => Rails 4.1.1 application starting in production on http://0.0.0.0:36532
2014-07-01T16:38:25.614475 00:00 app[web.1]: Exiting
2014-07-01T16:38:25.614448 00:00 app[web.1]: => Booting WEBrick
2014-07-01T16:38:25.614453 00:00 app[web.1]: => Notice: server is listening on all interfaces (0.0.0.0). Consider using 127.0.0.1 (--binding option)
2014-07-01T16:38:24.918023 00:00 heroku[web.1]: Stopping all processes with SIGTERM
2014-07-01T16:38:28.512103 00:00 heroku[web.1]: Process exited with status 143
Я просмотрел некоторые ответы на эту проблему. Большинство людей говорят, что Heroku не поддерживает sqlite3 и что мне нужно преобразовать мою базу данных в PostgreSQL
Дополнительная информация:
Gemfile
source 'https://rubygems.org'
gem 'rails', '4.1.1'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass'
group :development, :test do
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
gem 'sdoc', '~> 0.4.0', group: :doc
gem 'spring', group: :development
config/database.yml
default: amp;default
adapter: sqlite3
pool: 5
timeout: 5000
development:
<<: *default
database: db/development.sqlite3
test:
<<: *default
database: db/test.sqlite3
production:
<<: *default
database: db/production.sqlite3
Спасибо за любую будущую помощь…
Комментарии:
1. Попробуйте перезапустить свое приложение Heroku
heroku restart -a app_name
. Обычно вам не нужно дополнительно настраивать базу данных PG на heroku (для OMR до сих пор). Проверьте миграцию и, если необходимо, поскольку вы находитесь на курсе, вы можете отказаться и снова создать свою базу данных.2. Пробовал это уже, но все равно получаю ту же страницу с ошибкой.
3. не могли бы вы опубликовать свой репозиторий github, из которого вы отправляете его в heroku?
4. Да, вот оно : github.com/cyzanfar/Photoshare
5. Ваш gemfile не обновляется!
Ответ №1:
Самый простой способ решить эту проблему — создать производственную группу в вашем Gemfile :
group :production do
gem 'pg'
end
Затем в вашем терминале (в пути к проекту) запустите:
bundle install
После успешного завершения вашего пакета вам необходимо изменить файл config / database.yml :
production:
adapter: postgresql
encoding: utf8
database: your_database_name
pool: 5
username: postgres_username
password: postgres_password
host: 127.0.0.1
Это должно решить вашу проблему с изменением адаптера базы данных.
PS. Позаботьтесь об отступах в файле database.yml, это важно.
Ответ №2:
DB
Ваша проблема почти наверняка связана с БД (как вы уже предположили)
В Heroku есть два типа ошибок — стандартные ошибки «Rails» и ошибки платформы Heroku:
Ошибка Rails
Ошибка Heroku
—
Ошибка
Эти ошибки являются стандартными для приложений Rails, работающих на Heroku — разница в том, что ошибка Rails является производной от самого приложения Rails; ошибка Heroku возникает с платформы Heroku
Ошибки Heroku по сути означают, что ваше приложение не может загружаться по какой-либо причине; обычно потому, что оно не может подключиться к вашей БД или в БД нет нужных таблиц данных.
Чтобы исправить это, сначала необходимо убедиться, что вы используете производственную базу данных (настоятельно рекомендуется использовать базу данных Postgres DB Heroku):
#config/database.yml
production:
....
После того, как вы настроили и Heroku
выполнили эту настройку, вам необходимо убедиться, что база данных заполнена правильными таблицами. Для этого запустите heroku run rake db:migrate
в своем локальном cmd
Обновить
Чтобы убедиться, что у вас есть производственная база данных, используйте базу данных Heroku Postgres, которая должна входить в стандартную комплектацию панели управления вашего приложения Heroku
Если вам нужно добавить Heroku postgres db на свою панель мониторинга, вам просто нужно добавить add-on
here
Как только база данных появится на вашей панели инструментов, щелкните по ней, и она должна появиться с интерфейсом Postgres. Вы можете увидеть, как подключиться к БД в Ruby здесь; вы должны использовать сведения, предоставленные надстройкой Postgress на панели управления вашего приложения
Как правило, Heroku-совместимый database.yml
будет выглядеть следующим образом:
#config/database.yml
production:
adapter: postgresql
encoding: utf8
database: *********
pool: 5
username: ********* #-> *** data from heroku's postgres user details page
password: ******
host: ******
Комментарии:
1. Я не уверен, как мне следует изменить мой файл config / database.yml. Не могли бы вы подробнее рассказать об этом?
2. Заузай опубликовал то, что вам нужно включить в сам файл; что касается содержимого — вы можете получить информацию о своей базе данных у Heroku. Я могу написать об этом немного подробнее, если вы конкретны?
3. Хорошо, написал @zauzaj
production: adapter: postgresql encoding: utf8 database: your_database_name pool: 5 username: postgres_username password: postgres_password host: 127.0.0.1
. однако я не знаю имя своей базы данных и имя пользователя / пароль. Я следую онлайн-руководству, мы еще не играли с какой-либо базой данных.4. Хорошо, мои извинения — я имел в виду структуру , которую вы поместили в производственную часть, — это то, что он написал. С точки зрения фактических данных, лучший способ — получить базу данных Heroku Postgres и использовать ее. Я могу провести вас через этот процесс, если хотите?
5. Потрясающе. Я запустил свое приложение rails
git push heroku master
, и теперь оно работает. Я больше не получаю страницу «ошибка приложения». Спасибо, приятель!!
Ответ №3:
Вы должны изменить свой Gemfile, Heroku не нравится SQLite
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'bootstrap-sass'
group :development, :test do
gem 'spring'
gem 'sqlite3'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
Вы всегда можете для справки взглянуть на месячный репозиторий Rails Github.