Sha256: b86a0cdbb53332f3efe2ba8cdf2744bd7b5624734a4fd194a230965bc290d2f6

Contents?: true

Size: 1.6 KB

Versions: 25

Compression:

Stored size: 1.6 KB

Contents

ks_namespace = namespace :ks do
  desc 'Create the keyspace in cassandra_config/cassandra.yml for the current environment'
  task create: :environment do
    begin
      CassandraObject::Schema.create_keyspace cassandra_config.keyspace, cassandra_config.keyspace_options
    rescue Exception => e
      if e.message =~ /conflicts/
        p "Keyspace #{cassandra_config.keyspace} already exists"
      else
        raise e
      end
    end
  end

  task drop: :environment do
    begin
      CassandraObject::Schema.drop_keyspace cassandra_config.keyspace
    rescue Exception => e
      if e.message =~ /non existing keyspace/
        p "Keyspace #{cassandra_config.keyspace} does not exist"
      else
        raise e
      end
    end
  end

  task reset: [:drop, :setup]

  task setup: [:create, :_load]

  namespace :structure do
    task dump: :environment do
      filename = ENV['SCHEMA'] || "#{Rails.root}/ks/structure.cql"
      File.open(filename, "w:utf-8") do |file|
        CassandraObject::Schema.dump(file)
      end
    end

    task load: :environment do
      filename = ENV['SCHEMA'] || "#{Rails.root}/ks/structure.cql"
      File.open(filename) do |file|
        CassandraObject::Schema.load(file)
      end
    end
  end

  task :_dump do
    ks_namespace["structure:dump"].invoke
  end

  task :_load do
    ks_namespace["structure:load"].invoke
  end

  private
    def cassandra_config
      @cassandra_config ||= begin
        cassandra_configs = YAML.load_file(Rails.root.join('config', 'cassandra.yml'))
        CassandraObject::Config.new cassandra_configs[Rails.env || 'development']
      end
    end
end

Version data entries

25 entries across 25 versions & 1 rubygems

Version Path
gotime-cassandra_object-4.12.1 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.12.0 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.6 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.5 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.4 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.3 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.2 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.1 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.11.0 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.5 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.4 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.3 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.2 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.1 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.10.0 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.9.2 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.9.1 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.9.0 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.8.1 lib/cassandra_object/tasks/ks.rake
gotime-cassandra_object-4.8.0 lib/cassandra_object/tasks/ks.rake