Rails: почему вызов to_a для строки недопустим в задаче rake?

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

7
задан Samo 16 December 2010 в 21:56
поделиться