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 +4 -0
- data/README.md +2 -0
- data/Rakefile +1 -0
- data/lib/adhearsion_sequel.rb +5 -0
- data/lib/adhearsion_sequel/controller_methods.rb +7 -0
- data/lib/adhearsion_sequel/plugin.rb +40 -0
- data/lib/adhearsion_sequel/plugin/service.rb +42 -0
- data/lib/adhearsion_sequel/version.rb +3 -0
- data/spec/adhearsion_sequel/controller_methods_spec.rb +19 -0
- data/spec/adhearsion_sequel/plugin/service_spec.rb +46 -0
- data/spec/adhearsion_sequel/plugin_spec.rb +37 -0
- data/spec/adhearsion_sequel_spec.rb +10 -0
- data/spec/spec_helper.rb +22 -0
- metadata +197 -0
data/Gemfile
ADDED
data/README.md
ADDED
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
@@ -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,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
|
data/spec/spec_helper.rb
ADDED
@@ -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
|