2012-06-26 15 views
14

Mi aplicación de rieles tiene su propia base de datos MySql (y requiere la gema mysql2) pero también necesita conectarse con una base de datos MongoDB externa para un modelo en particular (y he incluido mongoid y bson_ext en el Gemfile) Ahora, cuando intento generar una migración de un nuevo modelo, que me dice queEstablecer conexión de base de datos predeterminada Rieles

$ rails g migration CreateLocations 
     error mongoid [not found] 

Cuando me genera el modelo Ubicación incluía Documento Mongoid ::, por lo que los carriles obviamente piensa que está utilizando la base de datos externa como mi primaria Almacén de datos.

databse.yml:

development: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: associalize_development 
    pool: 5 
    username: root 
    password: 
    socket: /tmp/mysql.sock 

mongoid.yml:

development: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asfasdf 
    password: sadfasdf 
    database: app4574678 

test: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asdfadhasdfa 
    password: hadsadfas 
    database: app4574678 

production: 
    host: pearl.mongohq.com 
    port: 27019 
    username: asdfdfsasda 
    password: afdasdfdasdf 
    database: app4574678 

ACTUALIZACIÓN modelo que utiliza Mongo

class ExternalMongoModel 
    include Mongoid::Document 

    field :title 
    field :long_title 
    field :deal_type 
    field :merchandise_type 
    field :market_id 
    field :market_name 
    field :market_location, type: Array 
    field :featureType 
    field :country_code 
    field :subtitle 
    field :offer_ends_at 
    field :price 
    field :value 
    field :merchant_type 
    field :content 
    field :merchant 

    index(
    [[:division_latlon, Mongo::GEO2D]], background: true 
) 

end 
+0

Una solución es comenta 'mongoid' en mi Gemfile, crea y ejecuta las migraciones, luego descomenta y vuelve a enlazar. Obviamente no es legítimo – Chris

+0

Por favor, publique el código de modelo relevante para el que usa MongoDB. –

+0

@DeanBrundage actualizado – Chris

Respuesta

24

Esto, unido al bloque de aplicación en su configuración /application.rb:

config.generators do |g| 
    g.orm :active_record 
end 

(solución encontrada here)

17

Si no desea cambiar la configuración/application.rb podría utilizar este tiempo que genera el modelo:

rails generate active_record:migration 

Si cambia el application.rb archivo, para invocar un generador MongoId, digamos por un modelo 'contactos', se debería usar:

rails g mongoid:model contacts 

(solution link)

1

primer lugar, compruebe el bloque de abajo está presente en el archivo de configuración/application.rb en su aplicación rieles

config.generators do |g| 
    g.orm :active_record 
end 

Si no se agrega a continuación, o bien puede ejecutar

rails g active_record:migration 
Cuestiones relacionadas