2013-02-23 6 views
0

Используя следующее заявление:Rails - тест грабли не удается

rails generate scaffold Product title:string description:text image_url:string price:decimal 

и редактирование немного сгенерированного миграции я получил следующую миграцию:

class CreateProducts < ActiveRecord::Migration 
    def change 
    create_table :products do |t| 
     t.string :title 
     t.text :description 
     t.string :image_url 
     t.decimal :price, precision: 8, scale: 2 

     t.timestamps 
    end 
    end 
end 

После этого я успешно работать выполните следующую команду:

rake db:migrate 

и подключитесь к моей базе данных и убедитесь, что таблица действительно создана. Затем я бег

rake test 

и получил много ошибок, и источник проблемы, я считаю, что рельсы не в состоянии основать «продукты» таблицу:

1) Error: 
test_should_create_product(ProductsControllerTest): 
ActiveRecord::JDBCError: Table products does not exist 
    arjdbc/jdbc/RubyJdbcConnection.java:115:in `columns' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-jdbc-adapter-1.2.7/lib/arjdbc/db2/adapter.rb:514:in `columns' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:660:in `column_names' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:651:in `timestamp_column_names' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:585:in `table_rows' 
    org/jruby/RubyHash.java:1257:in `each' 
    org/jruby/RubyEnumerable.java:718:in `map' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:579:in `table_rows' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:494:in `create_fixtures' 
    org/jruby/RubyArray.java:1613:in `each' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:492:in `create_fixtures' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract/database_statements.rb:192:in `transaction' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:491:in `create_fixtures' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/connection_adapters/abstract_adapter.rb:168:in `disable_referential_integrity' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:476:in `create_fixtures' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:895:in `load_fixtures' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activerecord-3.2.12/lib/active_record/fixtures.rb:849:in `setup_fixtures' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:432:in `_run__858744690__setup__1004892786__callbacks' 
    org/jruby/RubyBasicObject.java:1659:in `__send__' 
    org/jruby/RubyKernel.java:2086:in `send' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:405:in `__run_callback' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:390:in `_run_setup_callbacks' 
    org/jruby/RubyBasicObject.java:1659:in `__send__' 
    org/jruby/RubyKernel.java:2086:in `send' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activesupport-3.2.12/lib/active_support/callbacks.rb:81:in `run_callbacks' 
    /home/gotqn/.rvm/gems/jruby-1.7.2/gems/activesupport-3.2.12/lib/active_support/testing/setup_and_teardown.rb:35:in `run' 

Как насколько я понял, когда тест сделан, моя «тестовая» база данных стирается, и к ней применяются миграции базы данных «развития». Поскольку я использую базу данных IBM DB2 Express 10.1, я полагаю, что мне нужно выполнить некоторые изменения в файлах, ответственных за тестирование.

Не могли бы вы помочь мне в решении этого вопроса?

Ниже я отобразили больше информации о всей ситуации в:

  1. Использование "IBM DB2 Express" версия 10.1
  2. Использование JRuby 1.7.2
  3. Использование Rails версии 3.2.12
  4. Использование Ubuntu 10.04 LTC
  5. Это как мой файл "database.yml" выглядит:
development: 
    adapter: jdbc 
    driver: com.ibm.db2.jcc.DB2Driver 
    url: jdbc:db2://localhost:50000/ddevelop 
    host: localhost 
    port: 50000 
    database: ddevelop 
    username: db2inst1 
    password: pass 

test: 
    adapter: jdbc 
    driver: com.ibm.db2.jcc.DB2Driver 
    url: jdbc:db2://localhost:50000/dtest 
    host: localhost 
    port: 50000 
    database: dtest 
    username: db2inst1 
    password: pass 

Примечание: "dtest" база уже создана.

ответ

1

База данных испытаний еще не обновлена. Вам необходимо запустить rake db:test:prepare после rake db:migration. Вы можете запустить его сейчас и повторить попытку.

+0

Я получаю следующую строку: «Задача не поддерживается« jdbc ». Не могли бы вы посоветовать? – gotqn

+0

@gotqn, у меня нет опыта работы с Rails с JDBC. Но ошибка связана с адаптером базы данных. У вас установлен адаптерный жемчуг? Как http://kenai.com/projects/activerecord-jdbc/pages/Home –

+0

Да и у меня нет проблем при запуске моего сервера и работе с базой данных разработки (добавьте записи, например, или записи списка). Проблема пришла на тестирование. – gotqn

Смежные вопросы