module CassandraMigrations::Config

Constants

CASSANDRA_CONNECTION_VALID_FIELDS

See valid options at github.com/datastax/ruby-driver/blob/master/lib/cassandra.rb#L163

Configuration
FIELDS

Public Class Methods

configurations() click to toggle source
# File lib/cassandra_migrations/config.rb, line 20
def self.configurations
  @configurations || load_config
end
connection_config_for_env() click to toggle source
# File lib/cassandra_migrations/config.rb, line 29
def self.connection_config_for_env
  env_config = Hash[self.configurations[Rails.env].each_pair.to_a]

  # support for old configuration param :port (singular)
  if env_config.include?(:port)
    env_config[:ports] = [env_config[:port]]
  end

  env_config.keep_if do |k,v|
    CASSANDRA_CONNECTION_VALID_FIELDS.include?(k) && v
  end

  Hash[self.configurations[Rails.env].each_pair.to_a].keep_if do |k,v|
    CASSANDRA_CONNECTION_VALID_FIELDS.include?(k) && v
  end
end
method_missing(method_sym, *arguments, &block) click to toggle source
# File lib/cassandra_migrations/config.rb, line 24
def self.method_missing(method_sym, *arguments, &block)
  load_config unless configurations
  self.configurations[Rails.env].send(method_sym)
end

Private Class Methods

load_config() click to toggle source
# File lib/cassandra_migrations/config.rb, line 48
def self.load_config
  begin
    configs = YAML.load(ERB.new(File.new(Rails.root.join("config", "cassandra.yml")).read).result)
    configurations = Hash[configs.map {|env, config| [env, Configuration.new(*(FIELDS.map {|k| config[k]}))]}]
    if configurations[Rails.env].nil?
      raise Errors::MissingConfigurationError, "No configuration for #{Rails.env} environment! Complete your config/cassandra.yml."
    end
    configurations
  rescue Errno::ENOENT
    raise Errors::MissingConfigurationError
  end
end