Bonsai-Elasticsearch аварийно завершает работу в Heroku Production URI::InvalidURIError

Наконец-то я получил elasticsearch, чтобы не сбой моего приложения при запуске, однако каждый раз, когда я пытаюсь найти приложение, происходит сбой, а добавление новой записи приводит к сбою приложения (но запись действительно добавляется).

Сообщение об ошибке, которое я получаю:

 Professor Store (0.9ms)  {"id":59,"exception":["URI::InvalidURIError","bad URI(is not URI?): http://heroku config:0"]}
2016-09-12T16:48:34.008480+00:00 app[web.1]: Completed 500 Internal Server Error in 14ms (Searchkick: 0.9ms | ActiveRecord: 7.6ms | Elasticsearch: 0.0ms)
2016-09-12T16:48:34.009289+00:00 app[web.1]: 
2016-09-12T16:48:34.009290+00:00 app[web.1]: URI::InvalidURIError (bad URI(is not URI?): http://heroku config:0):
2016-09-12T16:48:34.009291+00:00 app[web.1]:   app/controllers/professors_controller.rb:51:in `block in create'
2016-09-12T16:48:34.009291+00:00 app[web.1]:   app/controllers/professors_controller.rb:50:in `create'

Я не уверен, что случилось с URI::InvalidURIError (bad URI(is not URI?): http://heroku config:0): Я прошел через все здесь, и я просмотрел эту об ошибке URI, и мое приложение все еще падает по той же причине.

Мой Bonsai.rb выглядит так: `BONSAI_URL = ENV['beech-6556653.us-east-1.bonsai.io']

if BONSAI_URL
  uri = URI.parse(ENV['beech-6556653.us-east-1.bonsai.io'])
Searchkick.client = Elasticsearch::Client.new({
  url:BONSAI_URL,
  log: true
  })
end

В моей модели Professor.rb есть searchkick:

class Professor < ActiveRecord::Base
  searchkick
  belongs_to :user
  has_many :reviews

Наконец, мой гемфайл:

 source 'https://rubygems.org'
ruby '2.3.1'
    # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
    gem 'rails', '4.2.5.1'
    # Use SCSS for stylesheets
    gem 'sass-rails', '~> 5.0'
    # Use Uglifier as compressor for JavaScript assets
    gem 'uglifier', '>= 1.3.0'
    # Use CoffeeScript for .coffee assets and views
    gem 'coffee-rails', '~> 4.1.0'
    #bcrypt for for encrpytion
    gem 'bcrypt', '~> 3.1', '>= 3.1.11'
    #byebug
    gem 'byebug', '~> 9.0', '>= 9.0.5'
    # Use jquery as the JavaScript library
    gem 'jquery-rails'
    # Turbolinks makes following links in your web application faster. Read more: https://github.com/rails/turbolinks
    gem 'turbolinks'
    # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
    gem 'jbuilder', '~> 2.0'
    # bundle exec rake doc:rails generates the API under doc/api.
    gem 'sdoc', '~> 0.4.0', group: :doc
    #paperclip for easy upload management
    gem 'paperclip', '~> 4.3', '>= 4.3.6'
    #bootstrap-sass
    gem 'bootstrap-sass', '~> 3.3', '>= 3.3.6'
    #searchkick
    gem 'searchkick', '~> 1.2', '>= 1.2.1'
    #paginate
    gem 'will_paginate', '~> 3.1'
    #paginate for bootstrap
    gem 'bootstrap-will_paginate', '~> 0.0.10'
    #rmagick
    gem 'rmagick', '~> 2.15', '>= 2.15.4'
    #Carrierwave
    gem 'carrierwave'
    #Cloudinary
    gem 'cloudinary'
    #Paperclip forcloudinary
    gem 'paperclip-cloudinary'

person tfantina    schedule 12.09.2016    source источник
comment
Вы хотите ENV['BONSAI_URL'] в своем инициализаторе.   -  person Nick Zadrozny    schedule 12.09.2016
comment
Ник, твой ответ вместе с Робом решил мою проблему. Большое спасибо.   -  person tfantina    schedule 13.09.2016


Ответы (1)


Эта строка не нужна:

uri = URI.parse(ENV['beech-6556653.us-east-1.bonsai.io'])

Тем более, что этому ENV не присваивается значение. Вы можете увидеть все переменные среды вашего приложения с помощью heroku config:get в терминале.

person Rob Sears    schedule 12.09.2016