Я пытаюсь расшифровать несколько паролей для переноса базы данных. У меня есть какой-то старый Rails-код (на самом деле скрипт Runner), который прекрасно их расшифровывает. Но помещение этого же кода в задачу Rake приводит к сбою задачи с ... неопределенным методом to_a для secretkey: String ...
Почему вызов to_a для строки будет недопустимым в задаче Rake, но совершенно допустимым в скрипте Runner?
require 'openssl'
KEY = 'secretkey'
namespace :import do
task :users => :environment do
def decrypt_password(pw)
cipher = OpenSSL::Cipher::Cipher.new('bf-ecb')
cipher.decrypt
cipher.key = KEY.to_a.pack('H*') <<--------- FAILS RIGHT HERE on to_a
data = data.to_a.pack('H*')
data = cipher.update(data)
data << cipher.final
unpad(data)
end
end
... other methods
end
(Rails 3.0.0, Ruby 1.9.2)