connect_with 0.1.0

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.
@@ -0,0 +1 @@
1
+ Autotest.add_discovery { "rspec2" }
@@ -0,0 +1,4 @@
1
+ .DS_Store
2
+ tmp/*
3
+ pkg
4
+ doc
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2009 Chris Herring
2
+
3
+ Permission is hereby granted, free of charge, to any person
4
+ obtaining a copy of this software and associated documentation
5
+ files (the "Software"), to deal in the Software without
6
+ restriction, including without limitation the rights to use,
7
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the
9
+ Software is furnished to do so, subject to the following
10
+ conditions:
11
+
12
+ The above copyright notice and this permission notice shall be
13
+ included in all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22
+ OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,12 @@
1
+ MIT-License
2
+ Manifest
3
+ README.markdown
4
+ Rakefile
5
+ config/database.example.yml
6
+ connect_with.gemspec
7
+ lib/connect_with.rb
8
+ spec/connect_with_spec.rb
9
+ spec/fixtures/models.rb
10
+ spec/fixtures/structure.sql
11
+ spec/spec_helper.rb
12
+ spec/test_helper.rb
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+ require 'rake'
3
+
4
+ begin
5
+ require 'jeweler'
6
+ Jeweler::Tasks.new do |gem|
7
+ gem.name = "connect)with"
8
+ gem.summary = %Q{Handle multiple Database conenctions with ActiveRecord Models}
9
+ gem.description = %Q{Handle multiple Database conenctions with ActiveRecord Models}
10
+ gem.email = "chris.herring.iphone@gmail.com"
11
+ gem.homepage = "http://github.com/cherring/connection_ninja"
12
+ gem.authors = ["Chris Herring"]
13
+ gem.add_development_dependency "rspec"
14
+ end
15
+ Jeweler::GemcutterTasks.new
16
+ rescue LoadError
17
+ puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
18
+ end
19
+
20
+ require 'rake/rdoctask'
21
+ Rake::RDocTask.new do |rdoc|
22
+ version = File.exist?('VERSION') ? File.read('VERSION') : ""
23
+
24
+ rdoc.rdoc_dir = 'rdoc'
25
+ rdoc.title = "connect with #{version}"
26
+ rdoc.rdoc_files.include('README*')
27
+ rdoc.rdoc_files.include('lib/**/*.rb')
28
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.4.1
@@ -0,0 +1,6 @@
1
+ module ConnectWith
2
+ end
3
+
4
+ if defined?(::Rails::Railtie)
5
+ require 'connect_with/railtie'
6
+ end
@@ -0,0 +1,17 @@
1
+ require 'active_record'
2
+ require 'connect_with'
3
+
4
+ module ConnectWith
5
+ module Orms
6
+ module ActiveRecord
7
+ def connect_with(config_group, options = {})
8
+ establish_connection configurations[config_group.to_s][::Rails.env]
9
+ if options[:primary_key_prefix] == :table
10
+ set_primary_key { "#{self.table_name.singularize}_id" }
11
+ end
12
+ rescue
13
+ raise ::ActiveRecord::AdapterNotFound, "Could not find the #{::Rails.env} configuration for group \"#{config_group.to_s}\""
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,12 @@
1
+ require 'connect_with'
2
+
3
+ module ConnectWith
4
+ class Railtie < Rails::Railtie
5
+ initializer "connect_with.active_record" do |app|
6
+ if defined? ::ActiveRecord
7
+ require 'connect_with/orms/active_record'
8
+ ActiveRecord::Base.send(:extend, ConnectWith::Orms::ActiveRecord)
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,44 @@
1
+ require 'spec_helper'
2
+
3
+ describe ActiveRecord::Base, "methods" do
4
+ before do
5
+ ActiveRecord::Base.send(:extend, ConnectWith::Orms::ActiveRecord)
6
+ end
7
+
8
+ it "should have configurtions" do
9
+ ActiveRecord::Base.configurations.should_not == {}
10
+ end
11
+
12
+ it "should have connect with method" do
13
+ ActiveRecord::Base.should respond_to(:connect_with)
14
+ end
15
+ end
16
+
17
+ describe ConnectWith::Orms::ActiveRecord, "exception" do
18
+ it "should raise an error if connection group not in database.yml" do
19
+ lambda{ActiveRecord::Base.connect_with(:fial)}.should raise_error(::ActiveRecord::AdapterNotFound)
20
+ end
21
+ end
22
+
23
+ describe Customer do
24
+ before do
25
+ ActiveRecord::Base.send(:extend, ConnectWith::Orms::ActiveRecord)
26
+ @connection = Customer.establish_connection
27
+ end
28
+
29
+ it "should be connected to the alternate database" do
30
+ Customer.connection.current_database.should == "ninja_one"
31
+ end
32
+ end
33
+
34
+ describe Order do
35
+ before do
36
+ ActiveRecord::Base.send(:extend, ConnectWith::Orms::ActiveRecord)
37
+ @connection = Order.send(:connect_with, :other)
38
+ end
39
+
40
+ it "should be connected to the default database" do
41
+ Order.connection.current_database.should == "ninja_two"
42
+ end
43
+ end
44
+
@@ -0,0 +1,20 @@
1
+ development: &development
2
+ database: ninja_one
3
+ host: localhost
4
+ adapter: postgresql
5
+ username: rails
6
+ password: rails
7
+
8
+ test:
9
+ <<: *development
10
+
11
+ other:
12
+ development: &development
13
+ database: ninja_two
14
+ host: localhost
15
+ adapter: postgresql
16
+ username: rails
17
+ password: rails
18
+
19
+ test:
20
+ <<: *development
@@ -0,0 +1,2 @@
1
+ class Order < ActiveRecord::Base; end
2
+ class Customer < ActiveRecord::Base; end
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
3
+ require 'rspec'
4
+
5
+ require 'rails'
6
+ require 'active_record'
7
+ require 'connect_with/orms/active_record'
8
+
9
+ require './spec/fixtures/models'
10
+
11
+ FileUtils.mkdir_p "#{Dir.pwd}/tmp"
12
+ ActiveRecord::Base.logger = Logger.new(StringIO.new)
13
+ ActiveRecord::Base.configurations = YAML.load_file(File.join("spec", "fixtures", "database.yml"))
14
+
metadata ADDED
@@ -0,0 +1,68 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: connect_with
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Chris Herring
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2010-09-01 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rspec
16
+ requirement: &8242320 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 2.0.0.beta19
22
+ type: :development
23
+ prerelease: false
24
+ version_requirements: *8242320
25
+ description: Handle multiple Database conenctions with ActiveRecord Models
26
+ email: chris.herring.iphone@gmail.com
27
+ executables: []
28
+ extensions: []
29
+ extra_rdoc_files: []
30
+ files:
31
+ - .autotest
32
+ - .gitignore
33
+ - MIT-License
34
+ - Manifest
35
+ - Rakefile
36
+ - VERSION
37
+ - lib/connect_with.rb
38
+ - lib/connect_with/orms/active_record.rb
39
+ - lib/connect_with/railtie.rb
40
+ - spec/connect_with_spec.rb
41
+ - spec/fixtures/database.yml
42
+ - spec/fixtures/models.rb
43
+ - spec/spec_helper.rb
44
+ homepage:
45
+ licenses: []
46
+ post_install_message:
47
+ rdoc_options: []
48
+ require_paths:
49
+ - lib
50
+ required_ruby_version: !ruby/object:Gem::Requirement
51
+ none: false
52
+ requirements:
53
+ - - ! '>='
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ required_rubygems_version: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ requirements: []
63
+ rubyforge_project:
64
+ rubygems_version: 1.8.10
65
+ signing_key:
66
+ specification_version: 3
67
+ summary: Handle multiple Database conenctions with ActiveRecord Models
68
+ test_files: []