2013-11-15 1 views
0

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

rake aborted! 
/Users/farhadam/mboddy/db/migrate/20131113032404_create_microposts.rb:1: syntax error, unexpected tCONSTANT, expecting keyword_do or '{' or '(' 
...t:prepareclass CreateMicroposts < ActiveRecord::Migration 
...        ^
/Users/farhadam/mboddy/db/migrate/20131113032404_create_microposts.rb:10: syntax error, unexpected keyword_end, expecting $end 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `block in require' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:213:in `load_dependency' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activesupport-4.0.0/lib/active_support/dependencies.rb:228:in `require' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:718:in `load_migration' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:714:in `migration' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:708:in `disable_ddl_transaction' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:1012:in `use_transaction?' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:1004:in `ddl_transaction' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:958:in `execute_migration_in_transaction' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:920:in `block in migrate' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `each' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:916:in `migrate' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:764:in `up' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/migration.rb:742:in `migrate' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-4.0.0/lib/active_record/railties/databases.rake:42:in `block (2 levels) in <top (required)>' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval' 
/Users/farhadam/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `<main>' 
Tasks: TOP => db:migrate 
(See full trace by running task with --trace) 

Вот мой мигрирует стол:

bundle exec rake test:prepare 
class CreateMicroposts < ActiveRecord::Migration 
    def change 
    create_table :microposts do |t| 
     t.string :content 
     t.integer :user_id 
     t.timestamps 
    end 
    add_index :microposts,[:user_id,:created_at] 
    end 
end 

Любой знает почему это происходит и как я могу это исправить, чтобы, когда я делаю миграцию, это не дает мне эту ошибку?

+0

Любая удача с этим еще? – zeantsoi

ответ

1

Удалить все это с самого начала файла миграции: bundle exec rake test:prepare

bundle exec rake test:prepare запускается из командной строки. Разбитый, bundle exec выполняет скрипт в контексте текущего пакета; rake test:prepare (или, скорее всего, rake db:test:prepare) - задача грабли, которая должна быть выполнена.

Ваш миграционный следует читать следующим образом:

class CreateMicroposts < ActiveRecord::Migration 
    def change 
     create_table :microposts do |t| 
      t.string :content 
      t.integer :user_id 
      t.timestamps 
     end 
     add_index :microposts,[:user_id,:created_at] 
    end 
end 
+1

спасибо! Я ноб в рубине, это сработало :) – Farhadam

1

bundle exec rake test:prepare не Ruby - его не должно быть в файле миграции.