Миграция завершается с ошибкой: NoMethodError: неопределенный метод "миграция"

Я пытаюсь настроить Sequel в Ruby. Я зашел на http://sequel.rubyforge.org/rdoc/files/doc/migration_rdoc.html и создал свою первую миграцию. Затем я запустил Postgres.app в качестве своего сервера и сделал createb Qsario. Проблема возникает, когда я пытаюсь использовать свою миграцию для создания полей базы данных:

$sequel -E -m . postgres://localhost/Qsario
I, [2012-07-08T13:53:49.659795 #6258]  INFO -- : (0.000374s) SET standard_conforming_strings = ON
I, [2012-07-08T13:53:49.660113 #6258]  INFO -- : (0.000153s) SET client_min_messages = 'WARNING'
I, [2012-07-08T13:53:49.660359 #6258]  INFO -- : (0.000163s) SET DateStyle = 'ISO'
I, [2012-07-08T13:53:49.664679 #6258]  INFO -- : (0.000952s) SELECT NULL FROM "schema_info" LIMIT 1
I, [2012-07-08T13:53:49.665179 #6258]  INFO -- : (0.000214s) SELECT * FROM "schema_info" LIMIT 1
I, [2012-07-08T13:53:49.665544 #6258]  INFO -- : (0.000166s) SELECT 1 AS "one" FROM "schema_info" LIMIT 1
I, [2012-07-08T13:53:49.666100 #6258]  INFO -- : (0.000325s) SELECT COUNT(*) AS "count" FROM "schema_info" LIMIT 1
I, [2012-07-08T13:53:49.666461 #6258]  INFO -- : (0.000179s) SELECT "version" FROM "schema_info" LIMIT 1
Error: NoMethodError: undefined method `Migration' for Sequel:Module/Users/me/Projects/Qsario/db/migrate/001_create_user_and_file_tables.rb:3:in `<top (required)>'

Вот как выглядит 001_create_user_and_file_tables.rb:

Sequel.Migration do
  no_transaction

  change do
    create_table(:users) do
      primary_key :id
      String      :username, :unique=>true
      String      :email, :unique=>true
      String      :password_hash
      String      :password_salt
      DateTime    :joined_at, :null => false
      FalseClass  :banned, default=>false
      String      :role, default=>"user"
    end

    create_table(:files) do
      primary_key :id
      foreign_key :user_id, :users
      String      :filename, :null => false
      DateTime    :uploaded_at, :null => false
    end

    create_table(:users_files) do
      primary_key :id
      foreign_key :user_id, :users
      foreign_key :file_id, :files
    end
  end
end

Обратите внимание, что пока нет Rakefile или чего-то подобного, потому что я все еще пытаюсь все настроить. Я не использую рельсы. Так что этот файл .rb — единственный в каталоге.


person Qsario    schedule 08.07.2012    source источник
comment
Вам нужен Sequal.migration, а не Sequel.Migration.   -  person mu is too short    schedule 09.07.2012
comment
Сиквел? Это мало чем поможет :) Однако Sequel.migration ДЕЙСТВИТЕЛЬНО работал, как только я изменил значение по умолчанию на :default. Спасибо!   -  person Qsario    schedule 09.07.2012
comment
Одна орфографическая ошибка заслуживает другой :)   -  person mu is too short    schedule 09.07.2012
comment
Печально то, что я сначала попробовал Sequal.migration, прежде чем понял, что у меня было это право в первый раз, и вместо этого мне нужно было изменить миграцию на миграцию.   -  person Qsario    schedule 09.07.2012


Ответы (1)


Просто для справки, вот как выглядит фиксированная миграция с комментариями по исправлениям/улучшениям на случай, если кто-то еще совершит ту же ошибку, что и я. mu is too short заслуживает похвалы за то, что помог мне это исправить.

Sequel.migration do  # Lowercase 'm' in migration
  # That no_transaction bit was totally unnecessary.

  change do
    create_table(:users) do
      primary_key :id
      String      :username,    :unique=>true
      String      :email,       :unique=>true
      String      :password_hash
      String      :password_salt
      DateTime    :joined_at,   :null => false
      FalseClass  :banned,      :default=>false  # default needs to be :default
      String      :role,        :default=>"user"
    end

    create_table(:files) do
      primary_key :id
      foreign_key :user_id, :users
      String      :filename,    :null => false
      DateTime    :uploaded_at, :null => false
    end

    # A nicer way to make the old :users_files table.
    create_join_table(:user_id => :users, :file_id => :files)
  end
end
person Qsario    schedule 14.07.2012