我正在尝试为数据库迁移解密一堆密码.我有一些旧的Rails代码(实际上是一个Runner脚本),可以很好地解密它们.但是将相同的代码放入Rake任务会导致任务失败,并且…未定义的方法`to_a’表示“secretkey”:String …
为什么在Rake任务中调用字符串上的to_a无效,但在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)