I've just started a brand new rails project and the first task I'm trying to complete is creating an object and having it save within my database. I went through the automated way of generating an object, in this case a URL object as follows:
rails generate scaffold Url domain:string
I've also tested out two separate mongoid.yml configuration settings. The first is as follows:
development:
sessions:
default:
# Defines the name of the default database that Mongoid can connect to.
# (required).
uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database]
options:
consistency: :strong
The result of this configuration is that when a query takes place, I get the following error:
The operation: #<Moped::Protocol::Query
@length=39
@request_id=5
@response_to=0
@op_code=2004
@flags=[]
@full_collection_name=".urls"
@skip=0
@limit=0
@selector={}
@fields=nil>
failed with error 13075: "db name can't be empty"
I also tested with the following configuration:
development:
uri: mongodb://[username]:[password]@flame.mongohq.com:27046/[database]
When the code gets to the create method of the urls_controller it fails at @url.save with the following error:
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:100:in `parse'
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:61:in `create_session'
mongoid (3.0.0.rc) lib/mongoid/sessions/factory.rb:43:in `default'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:109:in `default'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:354:in `__session__'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:199:in `mongo_session'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:157:in `collection'
mongoid (3.0.0.rc) lib/mongoid/sessions.rb:25:in `collection'
mongoid (3.0.0.rc) lib/mongoid/persistence/operations.rb:26:in `collection'
mongoid (3.0.0.rc) lib/mongoid/persistence/operations/insert.rb:27:in `block in persist'
mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:25:in `block (2 levels) in prepare'
activesupport (3.2.3) lib/active_support/callbacks.rb:403:in `_run__2492706777632263523__create__3276423133299307975__callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_create_callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
mongoid (3.0.0.rc) lib/mongoid/callbacks.rb:95:in `run_callbacks'
mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:24:in `block in prepare'
activesupport (3.2.3) lib/active_support/callbacks.rb:403:in `_run__2492706777632263523__save__3276423133299307975__callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:405:in `__run_callback'
activesupport (3.2.3) lib/active_support/callbacks.rb:385:in `_run_save_callbacks'
activesupport (3.2.3) lib/active_support/callbacks.rb:81:in `run_callbacks'
mongoid (3.0.0.rc) lib/mongoid/callbacks.rb:95:in `run_callbacks'
mongoid (3.0.0.rc) lib/mongoid/persistence/insertion.rb:23:in `prepare'
mongoid (3.0.0.rc) lib/mongoid/persistence/operations/insert.rb:26:in `persist'
mongoid (3.0.0.rc) lib/mongoid/persistence.rb:49:in `insert'
mongoid (3.0.0.rc) lib/mongoid/persistence.rb:188:in `upsert'
app/controllers/urls_controller.rb:46:in `block in create'
My assumption is that my mongoid.yml file is incorrect but I'm not sure how to get this to work. Any thoughts?
This is how my production mongoid.yml looks like
<% if ENV['MONGOLAB_URI'] %>
<% uri = URI.parse(ENV['MONGOLAB_URI']) %>
production:
<<: *defaults
sessions:
default:
<<: *default_session
database: <%= uri.path.sub('/','') %>
username: <%= uri.user %>
password: <%= uri.password %>
hosts:
- <%= uri.host %>:<%= uri.port %>
<% end %>
and this works for me
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With