Как использовать Rails Low Level Cache на производстве? - PullRequest
0 голосов
/ 24 апреля 2019

У меня есть приложение, которое вызывает API и аутентифицируется с помощью токена. Мне нужно хранить этот токен и регулярно обновлять его, поэтому я использую Rails.cache.fetch для этого в пользовательском классе для обработки вызовов API. Это прекрасно работает на моей локальной машине разработчика, но в производстве это ошибочно. Я использую Mac для своей машины разработчика, и производство на Ubuntu 18. Вот код, который вызывает ошибку:

def authenticate
    Rails.cache.fetch(@token, expires_in: 2.hours.to_i) do
      login_uri = @base_uri + "auth/login"
      auth_response = HTTParty.post(login_uri, body: { username: ENV["API_USERNAME"], password: ENV["API_PASSWORD"] } )
      @token = auth_response.parsed_response["token"]
    end

  end

Вот ошибка, которую я получаю:

Errno::ENOTDIR (Not a directory @ rb_file_s_rename - 
 (/var/www/myapp/releases/20190424134348/tmp/cache/.00020190424-1954-lgpvq5, 
  /var/www/myapp/releases/20190424134348/tmp/cache/001/000/)):

Похоже, что Rails по какой-то причине пытается переименовать или переместить файл кэша. Если посмотреть на сервер, каталог /001 есть, но подкаталог /000 не существует.

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