ruby-on-rails – Rails:为什么在rake任务中调用to_a字符串无效?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – Rails:为什么在rake任务中调用to_a字符串无效?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试为数据库迁移解密一堆密码.我有一些旧的Rails代码(实际上是一个Runner脚本),可以很好地解密它们.但是将相同的代码放入Rake任务会导致任务失败,并且…未定义的方法`to_a’表示“secretkey”:String …

为什么在Rake任务中调用字符串上的to_a无效,但在Runner脚本中完全有效?

  1. require 'openssl'
  2.  
  3. KEY = 'secretkey'
  4.  
  5. namespace :import do
  6. task :users => :environment do
  7. def decrypt_password(pw)
  8.  
  9. cipher = OpenSSL::Cipher::Cipher.new('bf-ecb')
  10. cipher.decrypt
  11. cipher.key = KEY.to_a.pack('H*') <<--------- FAILS RIGHT HERE on to_a
  12.  
  13. data = data.to_a.pack('H*')
  14. data = cipher.update(data)
  15. data << cipher.final
  16. unpad(data)
  17.  
  18. end
  19. end
  20.  
  21. ... other methods
  22. end

(Rails 3.0.0,Ruby 1.9.2)

解决方法

在ruby 1.9中,String不再具有to_a方法.您的旧代码可能使用了Ruby 1.8,但确实如此.

猜你在找的Ruby相关文章