class XMigra::PermissionScriptWriter
Public Class Methods
new(path)
click to toggle source
Calls superclass method
# File lib/xmigra/permission_script_writer.rb, line 7 def initialize(path) super(path) @permissions = YAML.load_file(self.path + PERMISSIONS_FILE) raise TypeError, "Expected Hash in #{PERMISSIONS_FILE}" unless Hash === @permissions end
Public Instance Methods
ddl_block_separator()
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 18 def ddl_block_separator; "\n"; end
each_specified_grant() { |permissions, object, principal| ... }
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 56 def each_specified_grant @permissions.each_pair do |object, grants| grants.each_pair do |principal, permissions| permissions = [permissions] unless permissions.is_a? Enumerable yield permissions, object, principal end end end
grant_specified_permissions_sql()
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 51 def grant_specified_permissions_sql granting_permissions_comment_sql + enum_for(:each_specified_grant).map(&method(:grant_permissions_sql)).join("\n") end
header(content, size)
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 69 def header(content, size) dashes = size - content.length - 2 l_dashes = dashes / 2 r_dashes = dashes - l_dashes ('-' * l_dashes) + ' ' + content + ' ' + ('-' * r_dashes) end
in_ddl_transaction() { || ... }
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 14 def in_ddl_transaction yield end
line_comment(contents)
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 65 def line_comment(contents) "-- " + contents + " --\n" end
permissions_sql(options = {})
click to toggle source
# File lib/xmigra/permission_script_writer.rb, line 20 def permissions_sql(options = {}) "".tap do |result| result << @db_info.fetch('script comment', '') + "\n\n" transaction_sql = [ # Check for blatantly incorrect application of script, e.g. running # on master or template database. check_execution_environment_sql, # Create table for recording granted permissions if it doesn't exist ensure_permissions_table_sql, # Revoke permissions previously granted through an XMigra permissions # script revoke_previous_permissions_sql, # Grant the permissions indicated in the source file grant_specified_permissions_sql, ].flatten.compact.join(ddl_block_separator).tap do |result| Plugin.active.amend_composed_sql(result) if Plugin.active end if options.fetch(:transactional, true) result << in_ddl_transaction {transaction_sql} else result << transaction_sql end end end