Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

uninitialized constant Moped::BSON in rails 4 app on heroku

I just updated from rails 3 to rails 4. Everything works locally, but deployed on heroku, I get the following error:

ActionView::Template::Error (uninitialized constant Moped::BSON):
3: %nav.navbar-collapse
4:   %ul.nav
5:     %li
6:       - if user_signed_in?
7:         = link_to 'Logout', destroy_user_session_path, :method=>'delete'
8:       - else
9:         = link_to 'Login', new_user_session_path
app/views/layouts/_navigation.html.haml:6:in `_app_views_layouts__navigation_html_haml___1118031947301940708_70104067139880'
app/views/layouts/application.html.haml:18:in `_app_views_layouts_application_html_haml__1093647294459268715_70104069850820'

The same error occurs in other haml files when I access current_user - if current_user ...

like image 332
Jeff Tsui Avatar asked Apr 27 '14 22:04

Jeff Tsui


3 Answers

The following worked for me:

add to Gemfile:

gem "bson"
gem "moped", github: "mongoid/moped"

bundle install

add to application.rb:

require "bson"
require "moped"
Moped::BSON = BSON

Answer from: https://github.com/mongoid/mongoid/issues/3455

like image 66
Jeff Tsui Avatar answered Oct 13 '22 06:10

Jeff Tsui


See this comment from Moped's author as of Moped 2.0.0 (which is the version , as of this writing, used as the driver in mongoid 4.0.0):

Moped's BSON implementation has been removed in favor of the 10gen bson gem 2.0 and higher. All Moped::BSON references should be changed to just BSON.

https://github.com/mongoid/moped/blob/master/CHANGELOG.md

like image 37
JAR.JAR.beans Avatar answered Oct 13 '22 05:10

JAR.JAR.beans


This error can also be caused by having references to Moped::BSON in serialized cookies/session. Deleting cookies fixes it then.

like image 5
Maciej Majewski Avatar answered Oct 13 '22 05:10

Maciej Majewski