【发布时间】:2019-09-23 22:30:30
【问题描述】:
我正在将我的 Rails 应用程序从 Sqlite3 升级到 Postgresql。我正在使用 Ansible 设置我的服务器并使用 Capistrano 进行部署。我能够成功运行 ansible,现在我正在尝试将我的分支部署到安装了 Sqlite3 的现有服务器上。
在 capistrano 台阶上:
deploy:assets:precompile
我收到此错误
$HOME/.rbenv/bin/rbenv exec bundle exec rake assets:precompile
01 rake aborted!
01 Gem::LoadError: Specified 'sqlite3' for database adapter, but the gem is not loaded. Add `gem 'sqlite3'` to your Gemfile (and ensure its version is at the minimum required by ActiveRecord).
但我不明白。我在尝试部署的分支中设置了 Postgresql。
这是我的数据库 yml 文件。
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
development:
<<: *default
database: {appname}_development
test:
<<: *default
database: {appname}_test
staging:
<<: *default
database: {appname}_staging
username: <%= Rails.application.secrets[:db_username] %>
password: <%= Rails.application.secrets[:db_password] %>
显然用我的实际应用程序名称更改了 {appname}。我没有包含生产密钥,因为这个应用程序没有生产网站,只有一个登台服务器。它更像是我用于铁轨的游乐场。
有人有解决此问题的经验吗?我真的不确定 Capfile 是否有问题,或者我是否遗漏了什么。谢谢(如果您需要更多我的代码,请告诉我)
值得注意的是,这个应用程序仍在运行 Rails 5.1(我接下来要更新它,我只是想先在 Postgres db 上获取它)
编辑:好的,我正在做某事。我发现这个 capistrano 步骤:
04 ln -s /var/www/{appname}/shared/config/database.yml /var/www/{appname}/releases/20190923224949/config/database.yml
没有将我的数据库 yml 更新为更新后的 postgres 数据库。我猜我在某个地方遗漏了一些东西。 :哭:
【问题讨论】:
标签: ruby-on-rails postgresql capistrano