При попытке создать модель с Rails и PostgreSQL команда зависает без ошибок

При использовании этой команды:

rails generate model Event name:string

Ничего не происходит, и мне нужно CTRL + c.

Используемые версии:

  • Ruby 2.1.1p76
  • Rails 4.1.0
  • PostgreSQL 9.3.4
  • Mac OS X 10.9.3

Я проверил, что Postgres работает, и я могу подключиться к нему, запустив psql easyEventTracker_development. Я настраиваю проект рельсов, запустив rails new easyEventTracker -d postgresql

При запуске rake db:create появляется следующее сообщение:

easyEventTracker_development уже существует
easyEventTracker_test уже существует

Содержимое файла database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5

development:
  <<: *default
  database: easyEventTracker_development

test:
  <<: *default
  database: easyEventTracker_test

production:
  <<: *default
  database: easyEventTracker_production
  username: easyEventTracker
  password: <%= ENV['EASYEVENTTRACKER_DATABASE_PASSWORD'] %>

Если я настрою проект с помощью Rails с SQLite, все будет хорошо.

Ответы

Ответ 1

В Spring есть ошибка с Rails 4.1, которая заставляет генераторы зависать.

Попробуйте запустить spring stop и снова запустите генератор.

Ответ 2

Похоже, вы не предоставляете username и password для своих баз данных разработки и тестирования. Вы должны проверить, что вы можете подключиться к своей базе данных, используя

rails dbconsole

который предоставит SQL-запрос, специфичный для базы данных, который использует учетные данные, которые вы предоставляете в database.yml. Хотя sqlite3 - это программа на основе файлов, которая не требует учетных данных для входа в систему, вам понадобятся они даже в режиме разработки, если вы используете базу данных, которая может использовать другую схему.

Если вы настроили схему разработки для работы без пароля, вам все равно нужно указать имя схемы как имя пользователя, как в

username: easyEventTracker_development

Ответ 3

То же самое произошло со мной, и я не использовал Spring, поэтому решение не сработало.

Я просто покинул консоль, снова открыл ее, выполнил ту же команду, и она сработала.