2012-03-29 14 views
7

Soy nuevo en Stack Overflow y Ruby on Rails. Mi problema es que cuando ejecuto el comando rake db: create o rake db: migrate, la base de datos de prueba se ve afectada, pero la base de datos de desarrollo no.rake db: migrar y rake db: crear ambos trabajos en la base de datos de prueba, no en la base de datos de desarrollo

carriles (3.2.2)

mi database.yml:

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
test: &test 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_test 
    pool: 5 
    username: ticketee 
    password: my_password_here 

development: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 

production: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_production 
    pool: 5 
    username: ticketee 
    password: my_password_here 

cucumber: 
    <<: *test 

Gracias por la sugerencia, pero me temo que no es la razón. Mi RAILS_ENV = desarrollo. Cuando inicio el servidor de rieles, el servidor ejecuta la base de datos de desarrollo. si ejecuto "rails server -e test", el servidor usa la base de datos de prueba. Todavía no estoy seguro de por qué las migraciones se ejecutan en mi base de datos de prueba ...

ACTUALIZACIÓN: Basado en una sugerencia, comenté todas las configuraciones de bases de datos, excepto el desarrollo, y ahora recibo un error. Estoy ejecutando postgresql, tengo la gema 'pg' instalada. Primero, mi nueva base de datos.yml:

development: 
    adapter: postgresql 
    encoding: unicode 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 

# Warning: The database defined as "test" will be erased and 
# re-generated from your development database when you run "rake". 
# Do not set this db to the same as development or production. 
#test: &test 
# adapter: postgresql 
# encoding: unicode 
# database: ticketee_test 
# pool: 5 
# username: ticketee 
# password: my_password_here 

#production: 
# adapter: postgresql 
# encoding: unicode 
# database: ticketee_production 
# pool: 5 
# username: ticketee 
# password: my_password_here 

#cucumber: 
# <<: *test 

Mi mensaje de error!

Someguys-MacBook-Air:ticketee someguy$ rake db:migrate 
rake aborted! 
database configuration does not specify adapter 

Tasks: TOP => db:migrate => db:load_config 
(See full trace by running task with --trace) 
Someguys-MacBook-Air:ticketee someguy$ rake db:migrate -t 
** Invoke db:migrate (first_time) 
** Invoke environment (first_time) 
** Execute environment 
** Invoke db:load_config (first_time) 
** Invoke rails_env (first_time) 
** Execute rails_env 
** Execute db:load_config 
rake aborted! 
database configuration does not specify adapter 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks' 
/Users/someguy/.rvm/gems/[email protected]ltGems/gems/activerecord-3.2.2/lib/active_record/base.rb:718:in `<top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:6:in `block (2 levels) in <top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:158:in `block in invoke_with_call_chain' 
/Users/someguy/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:157:in `block in invoke_with_call_chain' 
/Users/someguy/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run' 
/Users/someguy/.rvm/gems/[email protected]/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>' 
/Users/someguy/.rvm/gems/[email protected]/bin/rake:19:in `load' 
/Users/someguy/.rvm/gems/[email protected]/bin/rake:19:in `<main>' 

Utilizando el database.yml anterior, rastrillo db: crear: todos han ejecutado correctamente y creó mi mesa. Sin embargo, mi migración aún falla con el mismo seguimiento de pila que el anterior.

cambié database.yml a esto: desarrollo: adaptador: sqlite3 base de datos: db/development.sqlite3 piscina: 5 tiempo de espera: 5000

test: 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

ACTUALIZACIÓN: He cambiado completamente mi base de datos .yml a esto:

development: 
    adapter: sqlite3 
    database: db/development.sqlite3 
    pool: 5 
    timeout: 5000 

test: &test 
    adapter: sqlite3 
    database: db/test.sqlite3 
    pool: 5 
    timeout: 5000 

production: 
    adapter: sqlite3 
    database: db/production.sqlite3 
    pool: 5 
    timeout: 5000 

cucumber: 
    <<: *test 

Ahora bien, esto es lo que sucede cuando corro rake db: caída: todos, seguido de rake db: migrate. El comando rake db: migrate ejecuta una migración, creando un db/test.sqlite3 Y agregando una tabla a él. Por lo tanto, mi migración todavía se está ejecutando en el entorno de prueba. Cuando ejecuto el entorno de rake RAILS_ENV = desarrollo db: migrate, sucede lo mismo y obtengo un archivo test.sqlite3 ...

+0

mi única sugerencia es de alguna manera se has establecido RAILS_ENV = prueba en tu env? –

+0

Buena sugerencia, me temo que no es así. –

+0

¿Has intentado comentar todo menos el desarrollo y ver qué pasa? Puede no funcionar, pero puede darte un error que conduzca a la solución. – huntsfromshadow

Respuesta

2

que tenía exactamente el mismo problema al iniciar la noche anterior. No tengo idea de qué pudo haber causado esto, pero finalmente encontré una solución que funcionó. Dentro del bloque de configuración en config/ambientes/develop.rb, añadí:

Rails.env = 'development' 

espero que funcione para usted también

+1

config/environments/name.rb debe coincidir con el nombre en database.yml. Rails es más una convención que una configuración. – Sairam

0

Se echa en falta el host: localhost en su archivo yml.

cambiar su configuración para esto:

development: 
    adapter: postgresql 
    encoding: unicode 
    host: localhost 
    database: ticketee_development 
    pool: 5 
    username: ticketee 
    password: my_password_here 
+0

He especificado el host, el mismo problema. Recuerde, puedo escribir migraciones a la base de datos de prueba anterior, pero no puedo escribir en el desarrollo bajo ninguna circunstancia. –

+0

Sospecho que hay un problema de espacio en blanco. Abra el archivo en vim con 'vi/path/to/database.yml' type': set list' para ver todos los caracteres invisibles. – Josh

+0

Acabo de probar eso, veo los $ símbolos justo donde espero verlos gracias por la vi sugerencia, eso será útil. –

0

error Bifurcando! Tal vez algunos problemas de almacenamiento en caché o registro Muestra que no hay nada de los errores en nuestro código.

Mi equipo lo resuelve.

  • eliminar el proyecto

  • git clonar el proyecto

  • config El database.yml

  • servidor de inicio

Todo está bien!

¡El mismo proyecto ha errado los errores! Así que pensamos que es problemas de env o cach o log.

3

Hay una línea de 'brillante' en activerecord/lib/active_record/tareas/database_tasks.rb:

environments << 'test' if environment == 'development' && ENV['RAILS_ENV'].nil? 

que, hasta jan 8, 2014 parecía:

environments << 'test' if environment == 'development' 
2

Se Parece que su solución podría involucrar un par de cosas. Es posible que su entorno confunda la migración debido a elementos existentes. Restablecer la base de datos mediante:

rake db:reset 

o

rake db:drop db:create 

en función de su entorno, debe ser capaz de hacer la migración.

rake db:migrate 

PS - Es posible que tenga que añadir bundle exec en el principio de cada mandato.

Buena suerte.

0

Puede utilizar rake db: migrate RAILS_ENV = "desarrollo"

o puede utilizar como

conjunto RAILS_ENV = desarrollo

rake db: migrate

Cuestiones relacionadas