ruby-on-rails - Capistrano SQLite3::SQLException:没有这样的表:用户

标签 ruby-on-rails ruby sqlite sinatra digital-ocean

Ubuntu 16,ruby,3.2,框架 Sinatra。

上限部署后未在生产中运行迁移。

我使用命令 cap deploy production 进行部署我的项目到远程服务器。

在 db 的 app.rb 连接设置中:

#app.rb

require "sinatra"
require "pry"
require "sinatra/activerecord"
require 'sinatra/flash'
require 'sinatra/base'
require "./models/user"
require "./models/game_counter"
require "./models/stash"
require "json"
require "pony"
require 'logger'


enable :static
enable :sessions


set :public_folder, File.dirname(__FILE__) + '/assets'

set :database, { adapter: "sqlite3", database: "sudoku_database.sqlite3" }

gem 文件
gem "rake"
gem "heroku"
gem "sinatra"
gem "sinatra-activerecord"
gem "sinatra-flash"
gem "sqlite3"
gem "pg"
gem "bcrypt"
gem "pry"
gem "pony"
gem "capistrano", '~> 3.1.0'
gem "capistrano-bundler", '~> 1.1.2'
gem 'passenger'

我在远程服务器上安装了 sqllite。

安装和定制的 capistrano。

配置/部署.rb
lock '3.4.0'

set :application, 'projectname'
set :repo_url, 'git@github.com:user/projectname.git'

set :deploy_to, '/home/deploy/projectname'

set :linked_dirs, %w{ log }


namespace :deploy do

  desc 'Restart application'
  task :restart do
    on roles(:app), in: :sequence, wait: 5 do
      execute :touch, release_path.join('tmp/restart.txt')
    end
  end

  after :publishing, 'deploy:restart'
  after :finishing, 'deploy:cleanup'
end

配置/生产.rb
set :stage, :production

server '188.177.76.190', user: 'deploy', roles: %w{web app db}, port: 2503

当我在浏览器中运行网站时,在日志中 nginx 显示错误:
2016-12-13 10:40:58 - ActiveRecord::StatementInvalid - SQLite3::SQLException: no such table: users: SELECT "users".* FROM "user 

请帮助我,不能理解为什么不在生产环境中运行数据库迁移以及我如何解决这个问题?

最佳答案

迁移没有 capistrano 任务。您应该将其添加到您的部署配置中。像这样(这取决于你的配置):

task :migrate do
  on roles(:app) do
    within release_path do
      with rack_env: fetch(:rack_env) do
        execute :rake, "db:migrate"
      end
    end
  end
end

after 'deploy', 'migrate'

关于ruby-on-rails - Capistrano SQLite3::SQLException:没有这样的表:用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119745/

相关文章:

ruby-on-rails - 使用 Active Admin 通过过滤器设置 has_many

ruby-on-rails - ruby 2.0 rails gem 安装错误 "cannot load such file -- openssl"

ruby-on-rails - Rails 在分配 id 时更新 bool 属性

ruby-on-rails - 更新 Rails 中已删除的对象时没有错误

ruby - Ruby 中的哈希值存储为副本?

macos - SVN 使用了错误的 sqlite 版本

sql - 如何在 SQLite 查询中转义字符串中的双引号?

ruby-on-rails - Ruby 中的 `try` 和 `&.`(安全导航运算符)有什么区别

ruby-on-rails - rails 使用 URI.parse 验证 url 抛出意外结果

ios - 将 Core Data/SQLite 数据库下载到应用程序中?