2016-12-13 5 views
1

Ubuntu 16, ruby, 3.2, framework Sinatra.Capistrano SQLite3 :: SQLException: нет такой таблицы: пользователи

После развертывания крышки без миграции на производстве.

Я развертываю с командой cap deploy production свой проект на удаленный сервер.

В 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" } 

Gemfile

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.

конфигурации/deploy.rb

lock '3.4.0' 

set :application, 'projectname' 
set :repo_url, '[email protected]: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 

конфигурации/production.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 

Помогите мне, пожалуйста, не могу понять, почему не выполняется миграция базы данных на p и как я решаю эту проблему?

ответ

1

Для миграции не существует задачи 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' 
+0

, когда я запустить колпачок производство разворачивать, каждый раз, когда подножку миграции и таблицы воссозданы снова, и все данные уничтожаются –

+0

Какой задачи грабель вы выполнение? Не 'rake db: migrate: reset'? – unkmas

+0

А также - вы столкнетесь с этой проблемой, если вы назовете «rake db: migrate» вручную на удаленном сервере? – unkmas

1

Перейти к вашему приложению в режиме реального времени и перенести базу данных на сервер в производственной среде.

rake db:migrate RAILS_ENV=production 
Смежные вопросы