У меня есть приложение, которое вызывает 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
не существует.