versión rápida (para quienes están familiarizados con Mongoid & Sinatra): Si se trata de no el tema YAML-análisis Psyche/Syck, ¿por qué demás podría yo conseguir este error cuando intenta conectarse a una base de datos MongoDB usando Mongoid? (O tal vez es esa cuestión, en cuyo caso, ¿cómo puedo solucionar mi archivo mongoid.yml, publican a continuación?)¿Por qué me aparece el error "db_name debe ser una cadena o símbolo"?
más detallada (original) versión:
tengo una aplicación Sinatra interactuar con una base de datos MongoDB través Mongoid:
configure do
Mongoid.load!('config/mongoid.yml')
end
Y mi archivo mongoid.yml se ve así:
development:
host: localhost
database: project_development
test:
host: localhost
database: project_test
production:
uri: <%= ENV['MONGOLAB_URI'] %>
Cada vez que trato de interactuar con la base de datos de alguna manera, obtengo el error db_name debe ser una cadena o símbolo.
Ahora, he encontrado mucho de información en Google sobre esto; pero todo lo que puedo encontrar parece indicar que el problema tiene que ver con Ruby ahora que usa el analizador Psyche YAML en lugar del viejo analizador de Syck. No creo que eso sea relevante en mi caso porque, por lo que puedo decir, el YAML anterior debería ser perfectamente analizable por cualquiera de los dos.
(.. Por lo que vale la pena, sin embargo, me tengo intentado usar el truco YAML::ENGINE.yamler= 'syck'
, en vano me dieron el mismo mensaje de error exacto)
cuando cambio la configuración para esto:
Mongoid.configure do |config|
name = "project_development"
host = "localhost"
config.master = Mongo::Connection.new.db(name)
end
... todo funciona bien. Entonces sé que MongoDB está trabajando en mi máquina. Es específicamente cuando uso un archivo YAML que las cosas salen mal.
¿Qué ofrece?
¿Se aseguró de que 'ENV ['RACK_ENV']' esté configurado correctamente, ya que eso es lo que 'Mongoid.load!' Usa si no encuentra 'Rails.env' – rubish
@Rubish: Intenté usar 'set: environment,: development' usando Sinatra; eso debería haberlo hecho, ¿verdad? –
@Rubish: ¡Wow, coloreame aturdido! Cambié mi código de 'set: environment' a configuración' ENV ['RACK_ENV'] 'explícitamente, ¡y funcionó! ¿Qué tal si conviertes ese comentario en una respuesta, para que puedas obtener algunos puntos de representante? ;) –