cassandra_migrations 0.0.1.pre0 → 0.0.1.pre1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/cassandra_migrations/cassandra.rb +3 -1
- data/lib/cassandra_migrations/railtie/initializer.rb +17 -0
- data/lib/cassandra_migrations/{tasks/cassandra.rake → railtie/tasks.rake} +0 -0
- data/lib/cassandra_migrations/railtie.rb +4 -5
- data/lib/cassandra_migrations.rb +1 -0
- data/spec/cassandra_migrations/cassandra_spec.rb +88 -0
- data/spec/cassandra_migrations_spec.rb +13 -0
- metadata +14 -9
@@ -77,9 +77,11 @@ private
|
|
77
77
|
def self.connect_to_server
|
78
78
|
load_config
|
79
79
|
|
80
|
+
Rails.logger.try(:info, "Connecting to Cassandra on #{config['host']}:#{config['port']}")
|
81
|
+
|
80
82
|
begin
|
81
83
|
self.client = Cql::Client.new(:host => config['host'], :port => config['port'])
|
82
|
-
client.
|
84
|
+
client.connect
|
83
85
|
rescue Cql::Io::ConnectionError => e
|
84
86
|
raise Errors::ConnectionError, e.message
|
85
87
|
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
|
3
|
+
# Em produção (como usamos o Passenger), vários processos ruby são criados através do fork
|
4
|
+
# do original. No UNIX, quando um fork é realizado, is file descriptors (arquivos, conexões a base de dados,
|
5
|
+
# sockets, e etc) são copiados em estado aberto para o processo filho. Se não reabrirmos a conexão com o cassandra
|
6
|
+
# no processo filho, quando ela for ser usada ela estará 'locked' pelo processo pai, o que resultará em deadlock.
|
7
|
+
|
8
|
+
# Mais explicações em: http://www.modrails.com/documentation/Users%20guide%20Apache.html#spawning_methods_explained
|
9
|
+
if defined?(PhusionPassenger)
|
10
|
+
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
11
|
+
if forked
|
12
|
+
CassandraMigrations::Cassandra.shutdown!
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
CassandraMigrations::Cassandra.start!
|
File without changes
|
@@ -1,15 +1,14 @@
|
|
1
1
|
# encoding : utf-8
|
2
2
|
|
3
|
-
require 'cassandra_migrations/cassandra'
|
4
|
-
|
5
3
|
class CassandraMigrations::Railtie < ::Rails::Railtie
|
6
4
|
|
7
|
-
initializer "cassandra_migrations.
|
8
|
-
|
5
|
+
initializer "cassandra_migrations.initializer" do
|
6
|
+
require File.expand_path('railtie/initializer', File.dirname(__FILE__))
|
9
7
|
end
|
10
8
|
|
11
9
|
rake_tasks do
|
12
|
-
Dir[File.expand_path("
|
10
|
+
Dir[File.expand_path("railtie/**/*.rake", File.dirname(__FILE__))].each do |file|
|
11
|
+
# 'load' is used because 'require' is only for .rb files
|
13
12
|
load file
|
14
13
|
end
|
15
14
|
end
|
data/lib/cassandra_migrations.rb
CHANGED
@@ -0,0 +1,88 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe CassandraMigrations::Cassandra do
|
5
|
+
|
6
|
+
it "should initialize without client or config" do
|
7
|
+
CassandraMigrations::Cassandra.client.should be_nil
|
8
|
+
CassandraMigrations::Cassandra.config.should be_nil
|
9
|
+
end
|
10
|
+
|
11
|
+
before do
|
12
|
+
Rails.stub(:root).and_return Pathname.new("spec/fixtures")
|
13
|
+
Rails.stub(:env).and_return ActiveSupport::StringInquirer.new("development")
|
14
|
+
end
|
15
|
+
|
16
|
+
after do
|
17
|
+
CassandraMigrations::Cassandra.shutdown!
|
18
|
+
end
|
19
|
+
|
20
|
+
describe ".start!" do
|
21
|
+
it "should raise exception if config/cassandra.yaml is not found" do
|
22
|
+
Rails.stub(:root).and_return Pathname.new("wrong_path")
|
23
|
+
|
24
|
+
expect do
|
25
|
+
CassandraMigrations::Cassandra.start!
|
26
|
+
end.to raise_exception CassandraMigrations::Cassandra::Errors::MissingConfigurationError
|
27
|
+
end
|
28
|
+
|
29
|
+
it "should load config/cassandra.yaml environment specific part in self.config" do
|
30
|
+
begin
|
31
|
+
CassandraMigrations::Cassandra.start!
|
32
|
+
rescue
|
33
|
+
end
|
34
|
+
|
35
|
+
CassandraMigrations::Cassandra.config.should == {
|
36
|
+
'host' => "127.0.0.1",
|
37
|
+
'port' => 9042,
|
38
|
+
'keyspace' => "cassandra_migrations_development",
|
39
|
+
'replication' => {
|
40
|
+
'class' => "SimpleStrategy",
|
41
|
+
'replication_factor' => 1
|
42
|
+
}
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should use host and port configurations to create cassandra client" do
|
47
|
+
cql_client_mock = Cql::Client.new
|
48
|
+
cql_client_mock.should_receive(:start!)
|
49
|
+
Cql::Client.should_receive(:new).with(:host => '127.0.0.1', :port => 9042).and_return(cql_client_mock)
|
50
|
+
|
51
|
+
begin
|
52
|
+
CassandraMigrations::Cassandra.start!
|
53
|
+
rescue
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should raise exception if not able to connect to cassandra host" do
|
58
|
+
cql_client_mock = Cql::Client.new
|
59
|
+
cql_client_mock.stub(:start!).and_raise Cql::Io::ConnectionError
|
60
|
+
Cql::Client.stub(:new).and_return cql_client_mock
|
61
|
+
|
62
|
+
expect do
|
63
|
+
CassandraMigrations::Cassandra.start!
|
64
|
+
end.to raise_exception CassandraMigrations::Cassandra::Errors::ConnectionError
|
65
|
+
end
|
66
|
+
|
67
|
+
it "should automatically use configured keyspace" do
|
68
|
+
CassandraMigrations::Cassandra.should_receive(:use).with('cassandra_migrations_development')
|
69
|
+
CassandraMigrations::Cassandra.start!
|
70
|
+
end
|
71
|
+
|
72
|
+
it "should raise exception if configured keyspace does not exist" do
|
73
|
+
expect do
|
74
|
+
CassandraMigrations::Cassandra.start!
|
75
|
+
end.to raise_exception CassandraMigrations::Cassandra::Errors::UnexistingKeyspaceError
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "query interface" do
|
80
|
+
it "should respond to query methods" do
|
81
|
+
CassandraMigrations::Cassandra.should respond_to :select
|
82
|
+
CassandraMigrations::Cassandra.should respond_to :write
|
83
|
+
CassandraMigrations::Cassandra.should respond_to :delete
|
84
|
+
CassandraMigrations::Cassandra.should respond_to :truncate
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# encoding : utf-8
|
2
|
+
require 'spec_helper'
|
3
|
+
|
4
|
+
describe CassandraMigrations do
|
5
|
+
it "should define modules" do
|
6
|
+
defined?(CassandraMigrations).should be_true
|
7
|
+
defined?(CassandraMigrations::Railtie).should be_true
|
8
|
+
defined?(CassandraMigrations::Cassandra).should be_true
|
9
|
+
defined?(CassandraMigrations::Cassandra::Query).should be_true
|
10
|
+
defined?(CassandraMigrations::Cassandra::Errors).should be_true
|
11
|
+
defined?(CassandraMigrations::Cassandra::Migrator).should be_true
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cassandra_migrations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.1.
|
4
|
+
version: 0.0.1.pre1
|
5
5
|
prerelease: 6
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - '='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.0.0.
|
21
|
+
version: 1.0.0.pre5
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 1.0.0.
|
29
|
+
version: 1.0.0.pre5
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rake
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -98,13 +98,16 @@ executables: []
|
|
98
98
|
extensions: []
|
99
99
|
extra_rdoc_files: []
|
100
100
|
files:
|
101
|
-
- lib/cassandra_migrations
|
102
|
-
- lib/cassandra_migrations/cassandra/errors.rb
|
101
|
+
- lib/cassandra_migrations.rb
|
103
102
|
- lib/cassandra_migrations/cassandra/migrator.rb
|
104
103
|
- lib/cassandra_migrations/cassandra/query.rb
|
105
|
-
- lib/cassandra_migrations/
|
104
|
+
- lib/cassandra_migrations/cassandra/errors.rb
|
105
|
+
- lib/cassandra_migrations/railtie/tasks.rake
|
106
|
+
- lib/cassandra_migrations/railtie/initializer.rb
|
107
|
+
- lib/cassandra_migrations/cassandra.rb
|
106
108
|
- lib/cassandra_migrations/railtie.rb
|
107
|
-
-
|
109
|
+
- spec/cassandra_migrations/cassandra_spec.rb
|
110
|
+
- spec/cassandra_migrations_spec.rb
|
108
111
|
homepage: https://github.com/hsgubert/cassandra_migrations
|
109
112
|
licenses: []
|
110
113
|
post_install_message:
|
@@ -125,8 +128,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
128
|
version: 1.8.0
|
126
129
|
requirements: []
|
127
130
|
rubyforge_project:
|
128
|
-
rubygems_version: 1.8.
|
131
|
+
rubygems_version: 1.8.25
|
129
132
|
signing_key:
|
130
133
|
specification_version: 3
|
131
134
|
summary: Cassandra schema management for a multi-environment developer.
|
132
|
-
test_files:
|
135
|
+
test_files:
|
136
|
+
- spec/cassandra_migrations/cassandra_spec.rb
|
137
|
+
- spec/cassandra_migrations_spec.rb
|