class CLI
Public Class Methods
new(env, out)
click to toggle source
# File bin/cassandra-web, line 18 def initialize(env, out) @env = env @out = out @parser = OptionParser.new @options = { :bind => '0.0.0.0:3000', :log_level => 'info' } option(:bind, '-B', '--bind BIND', String, 'ip:port or path for cassandra web to bind on (default: 0.0.0.0:3000)') option(:hosts, '-H', '--hosts HOSTS', String, 'coma-separated list of cassandra hosts (default: 127.0.0.1)') option(:port, '-P', '--port PORT', Integer, 'integer port that cassandra is running on (default: 9042)') option(:log_level, '-L', '--log-level LEVEL', String, 'log level (default: info)') option(:username, '-u', '--username USER', String, 'username to use when connecting to cassandra') option(:password, '-p', '--password PASS', String, 'password to use when connecting to cassandra') option(:compression, '-C', '--compression NAME', String, 'compression algorithm to use (lz4 or snappy)') option(:server_cert, '--server-cert PATH', String, 'server ceritificate pathname') option(:client_cert, '--client-cert PATH', String, 'client ceritificate pathname') option(:private_key, '--private-key PATH', String, 'path to private key') option(:passphrase, '--passphrase SECRET', String, 'passphrase for the private key') @parser.on('-h', '--help', 'Show help') { show_help } end
Public Instance Methods
run(argv)
click to toggle source
# File bin/cassandra-web, line 42 def run(argv) @parser.parse!(argv) require 'thin' require File.expand_path('../../', __FILE__) + '/app.rb' options = {} @options.each do |name, value| value = case name when :port, :username, :password value # return the value as is without modification when :hosts value.split(',').map!(&:strip) when :compression value.downcase.to_sym when :log_level name = :logger logger = Logger.new(@out) logger.level = Logger.const_get(value.upcase.to_sym) logger else next end options[name] = value end hosts = Array(options[:hosts]) hosts << '127.0.0.1' if hosts.empty? options[:load_balancing_policy] = ::Cassandra::LoadBalancing::Policies::WhiteList.new(hosts, ::Cassandra::LoadBalancing::Policies::RoundRobin.new) options[:compression] = :lz4 options[:page_size] = nil cluster = ::Cassandra.cluster(options) App.set(:cluster, cluster) App.set(:session, cluster.connect) App.helpers Helpers Thin::Server.start(*@options[:bind].split(':'), App) rescue => e puts "#{e.class.name}: #{e.message}" puts "" show_help end
Private Instance Methods
option(name, *args)
click to toggle source
# File bin/cassandra-web, line 94 def option(name, *args) @parser.on(*args) {|v| @options[name] = v} end
show_help()
click to toggle source
# File bin/cassandra-web, line 98 def show_help puts @parser exit 1 end