Я использую Rails 5.2 с ruby 2.5.1 и развертываю мое приложение на Heroku .
У меня возникли проблемы, когда я попытался запустить локальную задачу rake.Задача вызывает API, который отвечает файлом *.gz
, сохраняет его, архивирует, а затем использует извлеченный JSON для заполнения базы данных и, наконец, удаляет файл *.gz
.Задача проходит гладко в разработке, но при вызове в производство.Последняя строка, напечатанная в консоли: «Разархивировать файл ...», поэтому я предполагаю, что проблемы происходят из библиотеки zlib
.
companies_list.rake
require 'json'
require 'open-uri'
require 'zlib'
require 'openssl'
require 'action_view'
include ActionView::Helpers::DateHelper
desc 'Updates Company table'
task update_db: :environment do
start = Time.now
zip_file_url = 'https://example.com/api/download'
TEMP_FILE_NAME = 'companies.gz'
puts 'Creating folders...'
tempdir = Dir.mktmpdir
file_path = "#{tempdir}/#{TEMP_FILE_NAME}"
puts 'Downloading the file...'
open(file_path, 'wb') do |file|
open(zip_file_url, { ssl_verify_mode: OpenSSL::SSL::VERIFY_NONE }) do |uri|
file.write(uri.read)
end
end
puts 'Download complete.'
puts 'Unzipping the file...'
gz = Zlib::GzipReader.new(open(file_path))
output = gz.read
@companies_array = JSON.parse(output)
puts 'Unzipping complete.'
(...)
end
Кто-нибудь еще сталкивался с подобными проблемами и знает, как заставить его работать?