rake db: перенести и rake db: создать обе работы на тестовой базе данных, а не на базе разработки - PullRequest
8 голосов
/ 29 марта 2012

Я новичок в Stack Overflow и Ruby on Rails.Моя проблема в том, что когда я запускаю команду rake db: create или rake db: migrate, тестовая база данных затрагивается, но база данных разработки - нет.

rails (3.2.2)

my 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

Спасибо за предложение, но, боюсь, причина не в этом.Мой RAILS_ENV = разработка.Когда я запускаю сервер rails, сервер запускает базу данных разработки.если я запускаю «rails server -e test», то сервер использует тестовую базу данных.Я до сих пор не уверен, почему на моей тестовой базе данных выполняются миграции ...

ОБНОВЛЕНИЕ: Исходя из предложения, я закомментировал все конфигурации базы данных, кроме разработки, и теперь я получаю сообщение об ошибке.Я использую postgresql, у меня установлен гем 'pg'.Во-первых, мой новый database.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

Мое сообщение об ошибке!

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/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in `resolve_hash_connection'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:39:in `resolve_string_connection'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:23:in `spec'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/connection_adapters/abstract/connection_specification.rb:127:in `establish_connection'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/railtie.rb:76:in `block (2 levels) in <class:Railtie>'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `instance_eval'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:36:in `execute_hook'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:43:in `block in run_load_hooks'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `each'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activesupport-3.2.2/lib/active_support/lazy_load_hooks.rb:42:in `run_load_hooks'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/base.rb:718:in `<top (required)>'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/activerecord-3.2.2/lib/active_record/railties/databases.rake:6:in `block (2 levels) in <top (required)>'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `call'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:205:in `block in execute'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `each'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:200:in `execute'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/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/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:176:in `block in invoke_prerequisites'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `each'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:174:in `invoke_prerequisites'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/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/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:151:in `invoke_with_call_chain'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/task.rb:144:in `invoke'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:116:in `invoke_task'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block (2 levels) in top_level'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `each'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:94:in `block in top_level'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:88:in `top_level'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:66:in `block in run'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:133:in `standard_exception_handling'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/lib/rake/application.rb:63:in `run'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/gems/rake-0.9.2.2/bin/rake:33:in `<top (required)>'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/bin/rake:19:in `load'
/Users/someguy/.rvm/gems/ruby-1.9.3-p125@defaultGems/bin/rake:19:in `<main>'

Используя вышеупомянутый database.yml, rake db: create: all RAN CORRECTLY и создал мою таблицу.Тем не менее, моя миграция по-прежнему не удается с той же трассировкой стека, что и выше.

Я изменил свой файл database.yml следующим образом: разработка: адаптер: база данных sqlite3: пул db / development.sqlite3: 5 тайм-аут: 5000

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

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

ОБНОВЛЕНИЕ: я полностью изменил свою базу данных.yml to this:

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

Теперь вот что происходит, когда я запускаю rake db: drop: all, а затем rake db: migrate.Команда rake db: migrate запускает миграцию, создает базу данных db / test.sqlite3 И добавляет к ней таблицу.Итак, моя миграция все еще выполняется в тестовой среде.Когда я запускаю rake-среду RAILS_ENV = development db: migrate, происходит то же самое, и я получаю файл test.sqlite3 ...

Ответы [ 6 ]

5 голосов
/ 18 июня 2014

В 'есть блестящая' линия ActiveRecord / Библиотека / active_record / задачи / database_tasks.rb:

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

который до 8 января 2014 года выглядел так:

environments << 'test' if environment == 'development'
2 голосов
/ 03 июля 2014

Похоже, ваше решение может включать несколько вещей.Вполне возможно, что ваша среда сбивает с толку миграцию из-за существующих элементов.Сбросьте вашу базу данных, используя:

rake db:reset

или

rake db:drop db:create

, в зависимости от вашей среды, вы сможете выполнить миграцию.

rake db:migrate

PS - Вывозможно, придется добавить bundle exec в начале каждой команды.

Удачи.

2 голосов
/ 02 апреля 2012

У меня была точно такая же проблема, начиная с прошлой ночи. Не знаю, что могло вызвать это, но, наконец, нашел решение, которое сработало. Внутри блока конфигурации в config / средах / develop.rb я добавил:

Rails.env = 'development'

Я надеюсь, что это работает для вас тоже

1 голос
/ 29 марта 2012

В вашем файле yml отсутствует host: localhost.

Измените свою конфигурацию следующим образом:

development:
  adapter: postgresql
  encoding: unicode
  host: localhost
  database: ticketee_development
  pool: 5
  username: ticketee
  password: my_password_here
0 голосов
/ 03 февраля 2015

Вы можете использовать rake db: migrate RAILS_ENV = "development"

или вы можете использовать как

set RAILS_ENV = разработка

rake db: migrate

0 голосов
/ 09 сентября 2013

Forking error!Возможно некоторые проблемы с кэшированием или журналом. Это показывает, что в нашем коде нет ошибок.

Моя команда решает эту проблему.

  • Удалите проект

  • git clone проекта

  • config the database.yml

  • стартовый сервер

Все в порядке!

В том же проекте ошибки пропали!Таким образом, мы думаем, что это проблемы env или cach или log.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...