1

小さなモジュールlib/encryption/encryption.rbを作成しました

module Encryption
  def self.encrypt(value)
    ...
  end

  def self.decrypt(value)
    ...
  end
end

Deviseのこれら2つのファイルでこのモジュールを使用/アクセスしたい、つまり:

  1. token_authenticatable.rb
  2. 認証可能.rb

2 つの新しいファイルを作成して /config/initilaizers に配置することで、両方を既に上書きしています (元のソース コードをコピーして変更しました)。

  1. /config/initializers/token_authenticable.rb
  2. /config/initializers/authenticatable.rb

たとえば、1 つのファイルは次のようになります。

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 モジュールにアクセスするにはどうすればよいですか? この修正アプローチはベストプラクティスですか? そうでない場合、正しいアプローチは何ですか?

4

2 に答える 2

2

これが application.rb にある場合:

config.autoload_paths += %W(#{config.root}/lib)

次に、「/lib」が自動ロードされます。電話できるという意味

require 'encryption/encryption'

そして、それはうまくいくはずです。

于 2013-04-25T12:36:22.613 に答える
0

MyEncryptionAlgo などのクラス内に 2 つのメソッドをラップします。そのクラスのオブジェクトを作成する

obj = Encryption::MyEncryptionAlgo.new

このオブジェクトを使用して、これら 2 つのメソッドにアクセスします。

obj.encrypt(value)
obj.decrypt(value)
于 2013-04-25T12:30:23.237 に答える