Я пытаюсь расшифровать кучу паролей для миграции базы данных. У меня есть более старый код 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)