Search code examples
ruby-on-railsherokusunspotwebsolr

Heroku - RSolr::Error::Http (RSolr::Error::Http - 404 Not Found


In config/sunspot.yml

production:
  solr:
    hostname: http://index.websolr.com/solr/...
    port: 8983
    log_level: WARNING
    path: /solr/production
...

And my Heroku config variable is

http://index.websolr.com/solr/...

And everything else seems to be configured as per the docs, but I keep getting 404 messages in the log and app crashes. Has anyone come across this before and managed to fix it?


Solution

  • To clarify, Sunspot comes bundled with Solr by default, but that is completely separate from your websolr index. Websolr indices are managed through a dashboard that you can see by running heroku addons:open websolr. All of the configuration settings are applied there; you can't start/stop/restart websolr from the command line.

    Per the documentation:

    By default, Sunspot 1.3.0 supports the WEBSOLR_URL environment variable used by your Heroku application in production. This lets Sunspot perform actions on your index without further configuration, allowing users to get search up and running quickly without necessitating changes to their app’s codebase.

    If you would like more fine-grained control over which Solr servers you are using in different environments, you may run script/generate sunspot from a command line in your application’s root directory to create a Sunspot configuration file at config/sunspot.yml.

    So you should be able to simply remove the sunspot.yml file and Sunspot will simply use the value of your WEBSOLR_URL. Alternatively, you could use something like this:

    production:
       solr:
         hostname: index.websolr.com
         port: 80
         log_level: WARNING
         path: /solr/a1b2c3d4e5 (whatever your key is)