adhearsion_sequel 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in plugin-template.gemspec
4
+ gemspec
@@ -0,0 +1,2 @@
1
+ AdhearsionSequel
2
+ ==========================
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,5 @@
1
+ require "adhearsion_sequel/version"
2
+ require "adhearsion_sequel/plugin"
3
+ require "adhearsion_sequel/plugin/service"
4
+ require "adhearsion_sequel/controller_methods"
5
+ require "sequel"
@@ -0,0 +1,7 @@
1
+ module AdhearsionSequel
2
+ module ControllerMethods
3
+ # The methods are defined in a normal method the user will then mix in their CallControllers
4
+ # The following also contains an example of configuration usage
5
+ #
6
+ end
7
+ end
@@ -0,0 +1,40 @@
1
+ module AdhearsionSequel
2
+ class Plugin < Adhearsion::Plugin
3
+ extend ActiveSupport::Autoload
4
+
5
+ autoload :Service, 'adhearsion_sequel/plugin/service'
6
+
7
+ # Actions to perform when the plugin is loaded
8
+ #
9
+ init :adhearsion_sequel do
10
+ logger.warn "AdhearsionSequel has been loaded"
11
+ Service.start
12
+ end
13
+
14
+ # Basic configuration for the plugin
15
+ #
16
+ config :adhearsion_sequel do
17
+ adapter "mysql" , :desc => "Database adapter. It should be an adapter supported by sequel"
18
+ database "test" , :desc => "Database to connect to."
19
+ username "root" , :desc => "Database username."
20
+ password "" , :desc => "Database password."
21
+ host "localhost" , :desc => "host where the database is installed."
22
+ port 3306 , :desc => "port where the database is listening."
23
+ model_path "models" , :desc => "location of the Sequel Models"
24
+ end
25
+
26
+ # Defining a Rake task is easy
27
+ # The following can be invoked with:
28
+ # rake plugin_demo:info
29
+ #
30
+ tasks do
31
+ namespace :adhearsion_sequel do
32
+ desc "Prints the PluginTemplate information"
33
+ task :info do
34
+ STDOUT.puts "AdhearsionSequel plugin v. #{VERSION}"
35
+ end
36
+ end
37
+ end
38
+
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ module AdhearsionSequel
2
+ class Plugin
3
+ class Service
4
+ class << self
5
+
6
+ ##
7
+ # Start the Sequel connection with the configured database
8
+ def start
9
+ raise "Must supply an adapter to the AdhearsionSequel configuration" if (config.adapter.nil? || config.adapter.empty?)
10
+
11
+ params = config.__values.select { |k,v| !v.nil? }
12
+ establish_connection params
13
+
14
+ require_models params[:model_path]
15
+
16
+ end
17
+
18
+ private
19
+
20
+ ##
21
+ # Start the Sequel connection given the params
22
+ def establish_connection(params)
23
+ ::Sequel.connect("#{params[:adapter]}://#{params[:username]}:#{params[:password]}@#{params[:host]}:#{params[:port]}/#{params[:database]}", :logger => logger)
24
+ end
25
+
26
+ ##
27
+ # Access to adhearsion_sequel plugin configuration
28
+ def config
29
+ @config ||= Plugin.config
30
+ end
31
+
32
+ ##
33
+ # Require models after service starts
34
+ def require_models(path)
35
+ $LOAD_PATH.unshift(path)
36
+ Dir[File.join(path, "*.rb")].each { |file| require File.basename(file) }
37
+ end
38
+
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,3 @@
1
+ module AdhearsionSequel
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module AdhearsionSequel
4
+ describe ControllerMethods do
5
+ describe "mixed in to a CallController" do
6
+
7
+ class TestController < Adhearsion::CallController
8
+ include AdhearsionSequel::ControllerMethods
9
+ end
10
+
11
+ let(:mock_call) { mock 'Call' }
12
+
13
+ subject do
14
+ TestController.new mock_call
15
+ end
16
+
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdhearsionSequel::Plugin::Service do
4
+
5
+ describe "when starting the Sequel connection" do
6
+ def tempfile_with_content(contents)
7
+ Tempfile.new("bogus_model").tap do |file|
8
+ file.puts contents
9
+ file.flush
10
+ end
11
+ end
12
+
13
+ def sample_user_model
14
+ <<-CODE
15
+ class User < Sequel::Model
16
+ set_primary_key [:name]
17
+ end
18
+ CODE
19
+ end
20
+
21
+ let :options do
22
+ {
23
+ :adapter => "mysql",
24
+ :database => "test",
25
+ :username => "root",
26
+ :password => "",
27
+ :host => "localhost",
28
+ :port => 3306,
29
+ :model_path => 'models'
30
+ }
31
+ end
32
+
33
+ it "should raise an exception when no adapater has been configured" do
34
+ Adhearsion.config.adhearsion_sequel.adapter = nil
35
+ lambda { Adhearsion::Plugin.init_plugins }.should raise_error "Must supply an adapter to the AdhearsionSequel configuration"
36
+ end
37
+
38
+ it "establishes the connection with the not nil config values as options" do
39
+ Adhearsion.config.adhearsion_sequel.database = "test"
40
+ AdhearsionSequel::Plugin::Service.expects(:establish_connection).with(options).returns true
41
+ AdhearsionSequel::Plugin::Service.start
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdhearsionSequel::Plugin do
4
+
5
+ describe "while accessing the plugin configuration" do
6
+
7
+ it "should retrieve a valid configuration instance" do
8
+ Adhearsion.config.adhearsion_sequel.should be_instance_of Loquacious::Configuration
9
+ end
10
+
11
+ it "should configure with an adapter" do
12
+ Adhearsion.config.adhearsion_sequel.adapter.should == 'mysql'
13
+ end
14
+
15
+ it "should configure with a database" do
16
+ Adhearsion.config.adhearsion_sequel.database.should == 'test'
17
+ end
18
+
19
+ it "should configure with the database username" do
20
+ Adhearsion.config.adhearsion_sequel.username.should == 'root'
21
+ end
22
+
23
+ it "should configure with the database password" do
24
+ Adhearsion.config.adhearsion_sequel.password.should == ''
25
+ end
26
+
27
+ it "should configure with the database server port" do
28
+ Adhearsion.config.adhearsion_sequel.port.should == 3306
29
+ end
30
+
31
+ it "should configure with the database server host" do
32
+ Adhearsion.config.adhearsion_sequel.host.should == 'localhost'
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -0,0 +1,10 @@
1
+ require 'spec_helper'
2
+
3
+ describe AdhearsionSequel do
4
+ subject { AdhearsionSequel }
5
+
6
+ it "should be a module" do
7
+ subject.should be_kind_of Module
8
+ end
9
+
10
+ end
@@ -0,0 +1,22 @@
1
+ require 'adhearsion'
2
+ require 'adhearsion_sequel'
3
+
4
+ RSpec.configure do |config|
5
+ config.color_enabled = true
6
+ config.tty = true
7
+
8
+ config.mock_with :mocha
9
+ config.filter_run :focus => true
10
+ config.run_all_when_everything_filtered = true
11
+
12
+ config.before(:each) do
13
+ Adhearsion.config[:adhearsion_sequel].adapter = "mysql"
14
+ Adhearsion.config[:adhearsion_sequel].database = "test"
15
+ Adhearsion.config[:adhearsion_sequel].username = "root"
16
+ Adhearsion.config[:adhearsion_sequel].password = ""
17
+ Adhearsion.config[:adhearsion_sequel].host = "localhost"
18
+ Adhearsion.config[:adhearsion_sequel].port = 3306
19
+ end
20
+
21
+ end
22
+
metadata ADDED
@@ -0,0 +1,197 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adhearsion_sequel
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Julius Francisco
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-07 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: adhearsion
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ~>
20
+ - !ruby/object:Gem::Version
21
+ version: '2.1'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '2.1'
30
+ - !ruby/object:Gem::Dependency
31
+ name: activesupport
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: 3.0.10
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: 3.0.10
46
+ - !ruby/object:Gem::Dependency
47
+ name: sequel
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 3.40.0
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 3.40.0
62
+ - !ruby/object:Gem::Dependency
63
+ name: bundler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ~>
68
+ - !ruby/object:Gem::Version
69
+ version: '1.0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ~>
76
+ - !ruby/object:Gem::Version
77
+ version: '1.0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rspec
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ~>
84
+ - !ruby/object:Gem::Version
85
+ version: '2.5'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ~>
92
+ - !ruby/object:Gem::Version
93
+ version: '2.5'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rake
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: mocha
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: guard-rspec
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ description: Provides database connection for Adhearsion using Sequel
143
+ email:
144
+ - baldrailers@gmail.com
145
+ executables: []
146
+ extensions: []
147
+ extra_rdoc_files: []
148
+ files:
149
+ - lib/adhearsion_sequel/controller_methods.rb
150
+ - lib/adhearsion_sequel/plugin/service.rb
151
+ - lib/adhearsion_sequel/plugin.rb
152
+ - lib/adhearsion_sequel/version.rb
153
+ - lib/adhearsion_sequel.rb
154
+ - README.md
155
+ - Rakefile
156
+ - Gemfile
157
+ - spec/adhearsion_sequel/controller_methods_spec.rb
158
+ - spec/adhearsion_sequel/plugin/service_spec.rb
159
+ - spec/adhearsion_sequel/plugin_spec.rb
160
+ - spec/adhearsion_sequel_spec.rb
161
+ - spec/spec_helper.rb
162
+ homepage: http://iam.baldrailers.com
163
+ licenses: []
164
+ post_install_message:
165
+ rdoc_options: []
166
+ require_paths:
167
+ - lib
168
+ required_ruby_version: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ segments:
175
+ - 0
176
+ hash: -1865567593198506737
177
+ required_rubygems_version: !ruby/object:Gem::Requirement
178
+ none: false
179
+ requirements:
180
+ - - ! '>='
181
+ - !ruby/object:Gem::Version
182
+ version: '0'
183
+ segments:
184
+ - 0
185
+ hash: -1865567593198506737
186
+ requirements: []
187
+ rubyforge_project: adhearsion_sequel
188
+ rubygems_version: 1.8.24
189
+ signing_key:
190
+ specification_version: 3
191
+ summary: Provides database connection for Adhearsion using Sequel
192
+ test_files:
193
+ - spec/adhearsion_sequel/controller_methods_spec.rb
194
+ - spec/adhearsion_sequel/plugin/service_spec.rb
195
+ - spec/adhearsion_sequel/plugin_spec.rb
196
+ - spec/adhearsion_sequel_spec.rb
197
+ - spec/spec_helper.rb