我有一个远程 SQLSERVER 实例,我想从托管在 heroku 上的 rails 应用程序进行连接。我的宝石文件:
gem 'activerecord-sqlserver-adapter', '~> 3.2.12'
gem 'tiny_tds'
数据库.yml
production:
adapter: sqlserver
mode: dblib
dataserver: host.database.windows.net
database: items
username: username@host
password: password
azure: true
生产.rb
dbconfig = YAML.load(ERB.new(File.read(File.join("config","database.yml"))).result)
ActiveRecord::Base.establish_connection dbconfig['production']
但我在部署过程中遇到以下错误:
编写 config/database.yml 以从 DATABASE_URL 读取
Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
LoadError: Please install the sqlite3 adapter: `gem install activerecord-sqlite3-adapter` (sqlite3 is not part of the bundle. Add it to Gemfile.)
似乎活动记录需要 sqlite3 但如果我有 tiny_tds 它应该使用 sql server。
在开发环境中一切正常。当然,我缺少一些东西。
更新
我已经设置了自定义 buildpack BUILDPACK_URL:https ://github.com/firmhouse/heroku-buildpack-ruby-freetds.git 和 DATABASE_URL 配置变量。
更新 2
在部署时制作一个 dbconfig var 的 pp 显示这个
{"production"=>
{"adapter"=>"sqlite3",
"database"=>"dbname",
"username"=>"user",
"password"=>"pass",
"host"=>"127.0.0.1"}}
似乎 heroku 覆盖了我的 database.yml 文件,有什么建议吗?
更新 3
我设置了 DATABASE_URL=sqlserver//user:pass@host:1433/database 这是错的吗?