ruby-on-rails – Rails:为什么在rake任务中调用to_a字符串无效
发布时间:2020-12-16 19:10:23 所属栏目:百科 来源:网络整理
导读:我正在尝试为数据库迁移解密一堆密码.我有一些旧的Rails代码(实际上是一个Runner脚本),可以很好地解密它们.但是将相同的代码放入Rake任务会导致任务失败,并且…未定义的方法`to_a’表示“secretkey”:String … 为什么在Rake任务中调用字符串上的to_a无效,
我正在尝试为数据库迁移解密一堆密码.我有一些旧的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) 解决方法
在ruby 1.9中,String不再具有to_a方法.您的旧代码可能使用了Ruby 1.8,但确实如此.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |