我写了一个小模块 lib / encryption / encryption.rb
module Encryption
def self.encrypt(value)
...
end
def self.decrypt(value)
...
end
end
我想在Devise的这两个文件中使用/访问这个模块,即:
我已经通过创建2个新文件并将它们放入/ config / initilaizers(将原始源代码复制到其中并修改它们)来覆盖它们两个
例如,一个文件如下所示:
require 'devise/strategies/token_authenticatable'
require './lib/encryption/encryption.rb' #TRIED THIS, BUT DOES NOT WORK
module Devise
module Models
# The TokenAuthenticatable module is responsible for generating an authentication token and
# validating the authenticity of the same while signing in.
...
我的修改有效,但是如何在这些文件中访问我的lib / Encryption.rb模块? 这种修改方法是最佳实践吗? 如果没有,那么正确的做法是什么?
答案 0 :(得分:2)
如果您在application.rb中有此内容:
config.autoload_paths += %W(#{config.root}/lib)
然后'/ lib'将被自动加载。意思是你可以打电话
require 'encryption/encryption'
它应该有用。
答案 1 :(得分:0)
在MyEncryptionAlgo等类中包装两个方法。创建该类的对象
obj = Encryption::MyEncryptionAlgo.new
使用此对象访问这两种方法。
obj.encrypt(value)
obj.decrypt(value)