Задача ActiveRecord выполняется в неправильной среде с

Мне нужно запустить задачу Cron, включающую некоторую очистку данных в моей базе данных ActiveRecord. Я использую всякий раз драгоценный камень. Вот код:

schedule.rb

every 1.hour do
  rake 'notifications:clear'
end

notifications.rake

namespace :notifications do
  task clear: :environment do
    Rpush::Notification.delete_all
  end
end

Запуск этого дает мне следующую ошибку:

rake aborted!
ActiveRecord::NoDatabaseError: FATAL:  role "user_prod" does not exist

Я нахожусь в среде разработки. Вот мой файл database.yml:

default: &default
  adapter: postgresql
  encoding: unicode
  # For details on connection pooling, see Rails configuration guide
  # http://guides.rubyonrails.org/configuring.html#database-pooling
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>

development:
  <<: *default
  database: development_database

test:
  <<: *default
  database: test_database

staging:
  <<: *default
  database: staging_database
  username: user_staging
  password: <%= ENV['DATABASE_PASSWORD'] %>


production:
  <<: *default
  database: production_database
  username: user_prod
  password: <%= ENV['DATABASE_PASSWORD'] %>

Есть идеи, почему моя инструкция ActiveRecord, похоже, подключается к моей производственной среде? Заранее спасибо !


person KawaLo    schedule 29.12.2019    source источник


Ответы (1)


Обновите свой код следующим образом: -

В файле schedule.rb: -

every 1.hour do
  rake 'notifications:clear', :environment => "development"
end

И, наконец, выполнил эту команду: -

whenever --update-crontab

ИЛИ

Очистить существующие задания cron.

crontab -r

Обновите cronjob с окружением.

whenever --update-crontab --set environment='development'
person code_aks    schedule 29.12.2019