Я установил задачу 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"