Невозможно выполнить грабли в производственной среде из-за разрешений psql - PullRequest
0 голосов
/ 13 июня 2019

Я установил задачу rake, которую хочу запускать раз в час, используя выражение cron. У меня он работает локально в моей среде разработки, но я не могу заставить его работать в моей производственной среде (размещенной на digitalocean), потому что у меня возникают проблемы с разрешениями postgres.

Это код, который у меня есть в /lib/tasks/cron.rake:

  task :cron => :environment do
    puts "starting job"
    Schedule.run_schedules
    puts "finished job"
  end

Когда я запускаю rake cron в разработке, это приводит к следующему выводу:

starting job
finished job

Когда я запускаю ssh в производственную среду и запускаю следующую команду:

rake cron RAILS_ENV=production

Я получаю следующий вывод:

starting job
rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  role "root" does not exist

Я решил, что мне нужно запустить это как пользователь, владеющий psql, поэтому я выполнил следующие команды:

su user
rake cron RAILS_ENV=production

Но тогда я получаю это сообщение:

rake aborted!
LoadError: cannot load such file -- bundler/setup

Запуск

bundler

Результат:

Command 'bundler' not found, but can be installed with:

apt install ruby-bundler
Please ask your administrator.

Я пытался установить bundler с помощью sudo apt install ruby-bundler, но затем он говорит мне, что у меня нет необходимых разрешений.

Я полностью потерян здесь. Любая помощь очень ценится!

EDIT: Я тоже пробовал

psql -U user
psql -U user -w

оба результата

psql: FATAL:  Peer authentication failed for user "user"

1 Ответ

0 голосов
/ 14 июня 2019

Я думаю, что эта проблема связана с аутентификацией пользователя на database.yml Потому что всякий раз, когда вы переходите в рабочую среду, вы применяете другую базу данных, и, следовательно, другого пользователя и пароль.

Попробуйте эту же команду после изменения конфигурации database.yml, используйте ту же базу данных в производственной среде, что и в разработке, только для тестирования, а затем вы можете выполнить рефакторинг для соответствующего запуска на сервере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...