Pastie now auto-senses if line-wrap is a bad or good idea. Feedback?
## mark a section (Learn more)
class Rabbit < Nanite::Actor expose :add_user,:delete_user, :change_password, :list_users, :add_vhost, :delete_vhost, :list_vhosts, :map_user_vhost, :unmap_user_vhost, :list_user_vhosts, :list_vhost_users, :list_queues, :list_exchanges, :list_exchanges, :list_connections def list_queues(vhost) parse_list(rabbitmqctl :list_queues, vhost.empty? ? "" : "-p #{vhost}").first end def list_exchanges(vhost) parse_list(rabbitmqctl :list_exchanges, vhost.empty? ? "" : "-p #{vhost}").first end def list_bindings(vhost) parse_list(rabbitmqctl :list_bindings, vhost.empty? ? "" : "-p #{vhost}").first end def list_connections(payload) parse_list(rabbitmqctl :list_connections).first end def list_users(payload) parse_list(rabbitmqctl :list_users).first end def list_vhosts(payload) parse_list(rabbitmqctl :list_vhosts).first end def list_vhost_users(vhost) parse_list(rabbitmqctl :list_vhost_users, vhost).first end def list_user_vhosts(user) parse_list(rabbitmqctl :list_user_vhosts, user).first end def map_user_vhost(payload) if String === payload payload = JSON.parse(payload) end res = parse_list(rabbitmqctl(:map_user_vhost, payload['user'], payload['vhost'])) if res[1] "problem mapping user to vhost: #{payload['user']}:#{payload['vhost']} #{res[1]}" else "successfully mapped user to vhost: #{payload['user']}:#{payload['vhost']}" end end def unmap_user_vhost(payload) if String === payload payload = JSON.parse(payload) end res = parse_list(rabbitmqctl(:unmap_user_vhost, payload['user'], payload['vhost'])) if res[1] "problem unmapping user from vhost: #{payload['user']}:#{payload['vhost']} #{res[1]}" else "successfully unmapped user from vhost: #{payload['user']}:#{payload['vhost']}" end end def add_vhost(path) res = parse_list(rabbitmqctl(:add_vhost, path)) if res[1] "problem adding vhost: #{path} #{res[1]}" else "successfully added vhost: #{path}" end end def add_user(payload) if String === payload payload = JSON.parse(payload) end res = parse_list(rabbitmqctl(:add_user, payload['user'], payload['pass'])) if res[1] "problem adding user: #{payload['user']} #{res[1]}" else "successfully added user: #{payload['user']}" end end def change_password(payload) if String === payload payload = JSON.parse(payload) end res = parse_list(rabbitmqctl(:change_password, payload['user'], payload['pass'])) if res[1] "problem with change_password user: #{payload['user']} #{res[1]}" else "successfully changed password user: #{payload['user']}" end end def delete_user(payload) if String === payload payload = JSON.parse(payload) end res = parse_list(rabbitmqctl(:delete_user, payload['user'])) if res[1] "problem deleting user: #{payload['user']} #{res[1]}" else "successfully deleted user: #{payload['user']}" end end def delete_vhost(path) res = parse_list(rabbitmqctl(:delete_vhost, path)) if res[1] "problem deleting vhost: #{path} #{res[1]}" else "successfully deleted vhost: #{path}" end end def rabbitmqctl(*args) `rabbitmqctl #{args.join(' ')}` end def parse_list(out) res = [] error = nil out.each do |line| res << line.chomp unless line =~ /\.\.\./ error = $1 if line =~ /Error: (.*)/ end [res, error] end end Nanite.register Rabbit.new
This paste will be private.
From the Design Piracy series on my blog: