#postgresql #ruby-on-rails-3.2 #capistrano #asset-pipeline
#postgresql #ruby-on-rails-3.2 #capistrano #ресурс-конвейер
Вопрос:
Контекст представляет собой пробный запуск для первого тестирования развертывания ресурсов в процессе разработки, прежде чем переходить к производству.
раскомментируйте строку в следующем файле заголовка
load 'deploy'
# load 'deploy/assets'
load 'config/deploy'
генерирует откат, поскольку процесс capistrano создает файл манифеста
bundle exec rake RAILS_ENV=development RAILS_GROUPS=assets assets:precompile amp;amp; cp -- /Users/stageUser/v4/shared/assets/manifest.yml /Users/stageUser/v4/releases/20140623054425/assets_manifest.yml"
он обнаруживает ошибку
** [out :: ip] rake aborted!
** [out :: ip] FATAL: role "localhostUser" does not exist
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `initialize'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `new'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/connection_adapters/postgresql_adapter.rb:1222:in `connect'
** [out :: ip] /Users/stageUser/v4/shared/bundle/ruby/1.9.1/
localhostUser нигде не вызывается на промежуточном сервере, ни в deploy.rb, ни в Capfile. Он определен только для разработки и использования тестовой базы данных на localhost. ошибка явно возникает через postgresql_adapter.rb
странность обновления. Ссылка на ошибку закрытия гласит:
failed: "rvm_path=$HOME/.rvm/ $HOME/.rvm/bin/rvm-shell '1.9.3@v4'
версия ruby 1.9.3 … по сравнению с путем к пакету для ruby в версии 1.9.1 … хммм. может ли это быть связано?
завершение обновления
Что такое postgresql_adapter, вызываемый deploy / assets . Единственной подсказкой является файл manifests.yml, который может быть прочитан как инициализатор базы данных… эта строка вызывает ‘connection_parameters’, но тогда почему он использует localhostUser, когда stageServer не знает об этом?
имена пользователей database.yml определяются по-разному между localhost и промежуточным сервером, но я не могу понять, почему это повлияет на capfile.
Как я могу убедиться, что роль установлена правильно?
Ответ №1:
Далее следует исправление, но не правильный ответ на проблему.
Все это связано с postgresql и его ролями. Мой файл database.yml -файл .gitignore (d) У меня были разные значения для имени пользователя (или «роли» для postgresql)
sudo su localhostUser
который не был postgre (немного усложняет ситуацию, переводя меня в другой кластер)
createuser stageUser
Я признаю, что я не уверен, является ли это необходимой частью решения, но WT … играть безопасно
Затем последовательно:
pg_dump app_development > mydb.sql
rake db:migrate VERSION=0
измените имя пользователя в файле database.yml с localhostUser на stageUser
rake db:migrate
отредактируйте mydb.sql, заменив строку localhostUser на stageUser
psql app_development < mydb.sql
теперь выполняется развертывание.
Это подтверждает, что задача использует НЕ данные database.yml промежуточного сервера, а некоторый кэш с локального хоста. не то, что я ожидал