Приложение Sinatra вызывает «ActiveRecord :: ConnectionNotEstablished: Пул соединений с« основным »не найден».на БД: мигрировать с использованием database.yaml - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть приложение sinatra, и я хочу сконфигурировать свои базы данных для разработки, тестирования и производства с файлом database.yaml.

Добавление этого в мой app.rb файл и запуск rake db:migrate работает просто отлично:

configure :development do
    set :database, "sqlite3:forum-service.sqlite3"
end

Но я хочу разделить конфигурации базы данных в файле database.yaml, чтобы сохранить чистотукод.Если я удаляю приведенный выше код и добавляю файл config/database.yaml, как показано ниже, и запускаю rake db:migrate, я получаю:

rake aborted!
ActiveRecord::ConnectionNotEstablished: No connection pool with 'primary' found.

мой файл config / database.yaml

development:
  adapter: sqlite3
  database: db/forum_dev_sqlite3.db
  pool: 5
  timeout: 5000

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

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

мой Rakefile

require 'sinatra'
require 'sinatra/activerecord'
require 'sinatra/activerecord/rake'
require './app'
require 'rake/testtask'

task :default do
    puts 'type \'rake --tasks\' to list options.'
end

Rake::TestTask.new do |t|
    #t.pattern = "tests/**.rb"
    t.libs << "test"
    t.test_files = FileList['tests/unittest.rb']  # test*.rb for all
    t.verbose = true
end

в соответствии с документами Sinatra sinatra / database / postgresql-activerecord путем создания файла config/database.yaml конфигурации загружаются автоматически, но похоже, что чего-то не хватает, чтобы сделатьподключение возможно.Может быть, что-нибудь добавить в мой rakefile для чтения конфигов?

Я видел Sinatra, Puma, ActiveRecord: не найден пул соединений с «первичным» и Sinatra - ActiveRecord ::ConnectionNotEstablished: Нет пула соединений для ActiveRecord :: Base , но они не применяются для этой проблемы.

1 Ответ

0 голосов
/ 08 февраля 2019

sinatra-activerecord по умолчанию выглядит в config / database.yml (не yaml).Вы можете изменить любой другой путь с помощью опции конфигурации :database_file.

  set :database_file, 'config/database.yaml'
...