我对Rails很陌生,所以如果我的问题没有意义,我会道歉。
我有一个名为PaymentGatewayCipher
的课程,如下所示:
require 'openssl'
# Encapsulates payment gateway encryption / decryption utility functions
class PaymentGatewayCipher
class << self
def encrypt(file, options = {})
cipher = create_cipher
cipher.encrypt(cipher_key)
data = cipher.update(File.read(file))
data << cipher.final
if to_file = options[:to]
# Write it out to a different file
File.open(to_file, 'wb') do |f|
f << data
end
end
data
end
# Decrypts the given file
def decrypt(file)
cipher = create_cipher
cipher.decrypt(cipher_key)
encrypted_data = File.open(file, 'rb') {|io| io.read}
data = cipher.update(encrypted_data)
data << cipher.final
end
# Generates the cipher to be used for encryption/decryption
def create_cipher
OpenSSL::Cipher::Cipher.new('aes-256-cbc')
end
# Loads the cipher key used for the symmetric algorithm
def cipher_key
File.open(File.join(Rails.root, 'config/mystuff/live/cipher.key'), 'rb') {|io| io.read}
end
end
end
我想写一个rake task
来运行它来解密文件。我已经尝试将文件放在tasks/Rakefile
中,看起来像:
directory "tasks"
task :decrypt_test do
puts "Decypting"
pay_pal_config = PaymentGatewayCipher.decrypt('hpa1')
end
然而,当我运行它时,它说无法找到Class::Rails
帮助?
答案 0 :(得分:7)
使用lib/tasks
文件夹,不要忘记在任务中包含rails环境:
directory "tasks"
task :decrypt_test => :environment do
puts "Decypting"
pay_pal_config = PaymentGatewayCipher.decrypt('hpa1')
end
答案 1 :(得分:0)
您无需为此编辑 Rakefile 。在lib/tasks
中以 .rake 结尾的文件中添加您自己的任务,例如lib/tasks/bootstrap.rake
,这些文件将自动提供给Rake。