Ruby Sinatra应用程序在db上引发“ActiveRecord::ConnectionNotesAblished:找不到具有'primary'的连接池”。使用database.yaml迁移
我有一个sinatra应用程序,我想用database.yaml文件配置我的开发、测试和生产数据库 将此添加到my app.rb文件并运行rake db:migrate工作正常:Ruby Sinatra应用程序在db上引发“ActiveRecord::ConnectionNotesAblished:找不到具有'primary'的连接池”。使用database.yaml迁移,ruby,postgresql,activerecord,sqlite,sinatra,Ruby,Postgresql,Activerecord,Sqlite,Sinatra,我有一个sinatra应用程序,我想用database.yaml文件配置我的开发、测试和生产数据库 将此添加到my app.rb文件并运行rake db:migrate工作正常: configure :development do set :database, "sqlite3:forum-service.sqlite3" end 但我希望在database.yaml文件中保持数据库配置的分离,以保持代码更清晰。如果我删除上面的代码并添加config/database.yaml文件,如
configure :development do
set :database, "sqlite3:forum-service.sqlite3"
end
但我希望在database.yaml文件中保持数据库配置的分离,以保持代码更清晰。如果我删除上面的代码并添加config/database.yaml文件,如下所示,然后运行rake db:migrate,我会得到:
my 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
我的耙子
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 docs的说法,通过创建config/database.yaml文件,配置会自动加载,但似乎缺少一些东西使连接成为可能。也许可以在我的rakefile中添加一些内容来读取配置
我看到了,但它们不适用于此问题。默认情况下,sinatra activerecord在config/database.yml中查找,而不是yaml。您可以使用:database\u file配置选项更改为任何其他路径
set :database_file, 'config/database.yaml'
我想你想要的是database.yml而不是database。yaml@spike它们是一样的。您可以将YAML内容保存在带有.yml或yamlcheck out的文件中-sinatra正在显式查找.yml。测试后添加了一个带有该内容的答案
set :database_file, 'config/database.yaml'