class Casbin::Persist::Adapters::FileAdapter
the file adapter for Casbin
. It can load policy from file or save policy to file.
Attributes
file_path[R]
Public Class Methods
new(file_path)
click to toggle source
Calls superclass method
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 11 def initialize(file_path) super() @file_path = file_path end
Public Instance Methods
load_policy(model)
click to toggle source
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 16 def load_policy(model) raise 'invalid file path, file path cannot be empty' unless File.file?(file_path) load_policy_file(model) end
save_policy(model)
click to toggle source
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 22 def save_policy(model) raise 'invalid file path, file path cannot be empty' unless File.file?(file_path) save_policy_file(model) end
Private Instance Methods
load_policy_file(model)
click to toggle source
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 32 def load_policy_file(model) File.foreach(file_path) { |line| load_policy_line(line.chomp.strip, model) } end
policy_lines(model, root_key)
click to toggle source
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 43 def policy_lines(model, root_key) return [] unless model.model.key?(root_key) model.model[root_key].map do |key, ast| ast.policy.map { |policy_values| "#{key}, #{policy_values.join ', '}" } end end
save_policy_file(model)
click to toggle source
# File lib/casbin-ruby/persist/adapters/file_adapter.rb, line 36 def save_policy_file(model) # 'w:UTF-8' required for Windows File.open(file_path, 'w:UTF-8') do |file| file.write %w[p g].map { |root_key| policy_lines(model, root_key) }.flatten.join "\n" end end