adhearsion_sequel 0.0.1

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/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