我有一个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/databases/postgresql-activerecord,方法是制作一个config/database.yaml
文件,配置会自动加载,但是看起来有些东西使连接成为可能。也许在我的rakefile中添加一些内容以读取配置?
我见过Sinatra, Puma, ActiveRecord: No connection pool with 'primary' found和Sinatra - ActiveRecord::ConnectionNotEstablished: No connection pool for ActiveRecord::Base,但它们不适用于此问题。
答案 0 :(得分:1)
sinatra-activerecord默认情况下出现在config / database.yml(不是yaml)中。您可以使用:database_file
配置选项更改为任何其他路径。
set :database_file, 'config/database.yaml'