Praca inżynierska - problem ze skonfigurowaniem Elasticsearch

Witajcie.
Pisze pracę inżynierską pod tytułem “Portal społecznościowy w technologii Ruby on Rails”.
Otóż przygodę z Ruby On Rails zacząłem pod koniec listopada 2014, czyli stosunkowo nie dawno i nie mam większego doświadczenia. Z promotorem ustaliłem tyle -> przerobić tutorial https://www.railstutorial.org/book/beginning co też uczyniłem i dopiero zająć się faktyczną pracą własną.
Do istniejącego tutorialu mam dodać możliwość wyszukiwania (z podpowiedzią) po np postach. W dalszym rozwoju aplikacji ma istnieć autozamazywanie numerów tablic rejestracyjnych na zdjęciach, co nie jest już istotne w tym topicu.
Mój problem polega na tym iż :
projekt jest w chmurze https://ide.c9.io/ , z tego co wyszukałem w internecie istnieje zewnętrzne oprogramowanie Elasticsearch wyspecjalizowane w tego typu wyszukiwaniach, jednak nie potrafię skonfigurować tego “dodatku”. Od 3 tygodni samemu próbowałem to osiągnąć jednak jestem bezsilny i proszę społeczność tego forum o możliwość pomocy w zaistniałej sytuacji.

PS. Jestem wiecznym studentem a chciałbym jednak w końcu coś osiągnąć :stuck_out_tongue:

Pozdrawiam.

Nie wiem czy widziałeś ten tutorial https://shellycloud.com/blog/2013/10/adding-search-and-autocomplete-to-a-rails-app-with-elasticsearch - wszystko jest świetnie opisane, widoki co prawda w HAMLu, nie defaultowym erb ale nie powinieneś mieć problemów :slight_smile:

Tak próbowałem to zintegrować z ide.c9 jednak robiłem to na tyle nieumiejętnie że mi nie wyszło. Cały problem jest z zainstalowaniem elasticsearch w tej konkretnej chmurze. Reszta powinna pójść z górki… :stuck_out_tongue:

Dokopałem się do tej konfiguracji i z tego co pamiętam ostatecznie problem miałem z ustawieniem portów i chyba moja baza danych zastrajkowała…

http://www.searchly.com/documentation/developer-api-guide/ruby-rails/

Nie rozumiem sensu męczenia się z c9… Zwykły linuch, potem deploy na VPSa i na 100% będziesz mieć o wiele mniej problemów.

Też mi to w końcu przyszło do głowy. Tak też uczynię. Dziękuję za pomoc :smile:

@fizzlebubble O tym samym pomyślałem. Nawet opcja z Sublime + Heroku jest mniej skomplikowana.

Odnośnie Heroku, nawet to nie było tak “dziwne” do skonfigurowania jak cloud9 + Elasticsearch. No nic zrobię lokalnie na laptopie, byle by działało :smile:

Hej.
Zainstlowałem Ubuntu 14.04 LTS. Elasticsearch działa. Wyszukiwanie w konsoli działa. Teraz mam problem z poziomu “mega nowicjusz”… Próbuję przekonwertować plik .html.slim z poradnika podanego wyżej na .html.erb pod swoją aplikację.

"# app/views/books/index.html.slim
= form_tag books_path, class: “form-inline”, method: :get do
.form-group
= text_field_tag :query, params[:query], class: “form-control”

= submit_tag “Search”, class: “btn btn-primary”

  • if params[:query].present?

    = link_to “clear”, books_path
    "
    Póki co bez większego zrozumienia próbuję to zaaplikować pod tutorial Michaela Hartla. Rozumiem że zamiast books_path będzie w moim wypadku microposts_path (bo wyszukuje po micropostach), natomiast reszta składni tego kodu jest dla mnie czarną magią.
    Czy ktoś mógłby zasugerować jak powinienem stworzyć proste pole tekstowe i przycisk “Search” abym mógl wyszukiwać z poziomu portalu a nie tak jak do tej pory w konsoli rails w terminalu?
    Za każdą krytykę/pomoc będę bardzo wdzięczny.
    Pozdrawiam

Jak masz problem z indeksem to weź sobie wygeneruj scaffold i będziesz miał gotowy index.html.erb :slight_smile: Łatwiej potem wygooglać jak zrobić Search.

Search field i przycisk sa… Teraz nie wiem jak i gdzie dodać microposts_path żeby to trybiło. Any idea? A mam coś takiego so far… :

<%= form_tag microposts_path, method: :get do %>

<%= text_field_tag :query, params[:query], class: "Micropost" %> <%= submit_tag "Search", name: nil, class: "Micropost" %>

<% end %>

Czy microposts_path powinienem dodać w routes.rb ? Dobrze myśle? :stuck_out_tongue:

w pierwszej odpowiedzi dostałeś link do tak dokładnego wyjaśnienia współpracy es z rails ,że lepiej tego opisać sie nie da

Dzięki. Najwidoczniej tego nie rozumiem. Jeszcze :wink:

Zadziałało… @koprad: dzięki wielkie… taki głupi błąd robiłem ze szok! :smiley:

Nie jestem w stanie ogarnąć gdzie robię błąd przyy autocomplete… W consoli rails działa, na stronie nie wyświetla podpowiedzi. Gdzieś na necie wyczytałem że to być może przez połączenie turbo-links i jquery w jednym projekcie… Chociaż równie dobrze mogłem źle rozpisać w routes.rb “get :smile: autocomplete”. AAAlbo sam js w złym miejscu dodałem Pls help anyone bo się zadręczyć idzie :stuck_out_tongue:
user : example@railstutorial.org
pass : foobar

http://www.speedyshare.com/PRzfD/sample-app-3rd-edition.zip

tu masz działającą apke, wprowadziłem kilka zmian:

https://bitbucket.org/koprad/sample_app_3rd_edition/src

btw poczytaj kolego o github, bitbucket

O em dzi! Panie @koprad oby Ci Bóg w dzieciach wynagrodził. Mega dziękuję za pomoc i jakbyś był gdzieś z okolic Trójmiasta to zapraszam na flaszkę :stuck_out_tongue: . Faktycznie powinienem na githuba wrzucić. Odnośnie Twoich poprawek… Czyli jednak w routach źle miałem i w application.html.erb. Super że mi pomogłeś :smiley: teraz mogę przekonwertować to w faktyczną inżynierkę!

Kolejny problem… Tym razem nie wiem jak poradzic sobie z tym oto problemem.

wklepuje komende -> heroku run rake db:seed
i dzieje sie :
" rake aborted!
Faraday::ConnectionFailed: Connection refused - connect(2)
/app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/adapter/net_http.rb:82:in perform_request' /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/adapter/net_http.rb:40:inblock in call’
/app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/adapter/net_http.rb:87:in with_net_http_connection' /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/adapter/net_http.rb:32:incall’
/app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/rack_builder.rb:139:in build_response' /app/vendor/bundle/ruby/2.0.0/gems/faraday-0.9.1/lib/faraday/connection.rb:377:inrun_request’
/app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/http/faraday.rb:21:in block in perform_request' /app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/base.rb:187:incall’
/app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/base.rb:187:in perform_request' /app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/transport/http/faraday.rb:20:inperform_request’
/app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-transport-1.0.6/lib/elasticsearch/transport/client.rb:111:in perform_request' /app/vendor/bundle/ruby/2.0.0/gems/elasticsearch-api-1.0.6/lib/elasticsearch/api/actions/index.rb:99:inindex’
/app/vendor/bundle/ruby/2.0.0/gems/searchkick-0.8.5/lib/searchkick/index.rb:26:in store' /app/vendor/bundle/ruby/2.0.0/gems/searchkick-0.8.5/lib/searchkick/logging.rb:24:inblock in store_with_instrumentation’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/notifications.rb:164:in block in instrument' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/notifications/instrumenter.rb:20:ininstrument’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/notifications.rb:164:in instrument' /app/vendor/bundle/ruby/2.0.0/gems/searchkick-0.8.5/lib/searchkick/logging.rb:23:instore_with_instrumentation’
/app/vendor/bundle/ruby/2.0.0/gems/searchkick-0.8.5/lib/searchkick/model.rb:80:in reindex' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:427:inblock in make_lambda’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:250:in call' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:250:inblock in conditional’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:in call' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:inblock in conditional’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:in call' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:inblock in conditional’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:in call' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:245:inblock in conditional’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:92:in call' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:92:in_run_callbacks’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/callbacks.rb:734:in _run_commit_callbacks' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/transactions.rb:314:incommitted!’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:93:in commit_records' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:157:incommit’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:179:in commit_transaction' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/transaction.rb:198:inwithin_new_transaction’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/connection_adapters/abstract/database_statements.rb:213:in transaction' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/transactions.rb:220:intransaction’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/transactions.rb:344:in with_transaction_returning_status' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/transactions.rb:291:insave!’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/persistence.rb:51:in create!' /app/db/seeds.rb:2:in<top (required)>’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:in load' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:inblock in load’
/app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:240:in load_dependency' /app/vendor/bundle/ruby/2.0.0/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:268:inload’
/app/vendor/bundle/ruby/2.0.0/gems/railties-4.2.0/lib/rails/engine.rb:547:in load_seed' /app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/tasks/database_tasks.rb:250:inload_seed’
/app/vendor/bundle/ruby/2.0.0/gems/activerecord-4.2.0/lib/active_record/railties/databases.rake:180:in `block (2 levels) in <top (required)>’"

Z tego co wyczytalem problem jest z nieskonfigurowaniem BONSAI_URL w environment … Co chyba zrobilem poprawnie, mimo wszystko nadal mam ten sam blad.

https://git.heroku.com/infinite-brook-2198.git
i https://bitbucket.org/Nuflin88/elasticsearch (niezwracajcie uwagi na to co wyswietla readme).
Absolutnie nie wiem gdzie i jak szukac rozwiazania mojego kolejnego problemu.
Pozdro.

W moim przypadku te dwa polecenia

# Bonsai
heroku addons:add bonsai
heroku config:add ELASTICSEARCH_URL=`heroku config:get BONSAI_URL`

zażegnały wszelkie problemy z heroku i searchkick. Próbowałeś tego wcześniej?

@Bantu dodalem bonsai przy pomocy pierwszej komendy wczesniej. Po wpisaniu drugiej cos sie zmienilo
“rake aborted!
Elasticsearch::Transport::Transport::Errors::NotFound: [404] {“error”:“IndexMissingException[[users_production] missing]”,“status”:404}”
Zaraz poszukam o co chodzi :slight_smile:
Dzieki za pomoc.