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