adhearsion-mongoid 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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: c3db3ebf88de59a56fdcf83eb4c6b828a31ed5e1
4
+ data.tar.gz: eb6c0230daf0ac660fc1e93b12924a7751efad09
5
+ SHA512:
6
+ metadata.gz: 1212fb8a888e50f87207bb5f32f8f1d9ce6ed8e141d1cc53f77956184e98920709fe87619fb6da22e31b92748db83c6edcc96f46249f06e4ec71ebebf6630824
7
+ data.tar.gz: 2e29c974e4a4f57bfcffdf08a50777e30ce77b228928f84b0b164df22891d124e24d5d03f767c6d8a2ea3c60c9104d5f11f871353919c27531348abd1e10a657
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in adhearsion-mongoid.gemspec
4
+ gemspec
data/README.md ADDED
@@ -0,0 +1,79 @@
1
+ adhearsion-mongoid
2
+ ==================
3
+
4
+ adhearsion-mongoid is an [Adhearsion](https://github.com/adhearsion/adhearsion) Plugin providing [Mongoid](https://github.com/mongoid/mongoid) compatibility.
5
+
6
+ Features
7
+ --------
8
+
9
+ * Append compatibility with Mongoid 3.0+
10
+
11
+ Requirements
12
+ ------------
13
+
14
+ * Adhearsion 2.0+
15
+
16
+ Testing environment
17
+ -------------------
18
+
19
+ Plugin has been tested with Adhearsion 2.4, Ruby 2.0 and Mongoid 4.0 (development).
20
+
21
+ Install
22
+ -------
23
+
24
+ Add `adhearsion-mongoid` to your Adhearsion app's Gemfile.
25
+
26
+ Plugin configuration (optional)
27
+ -------------------------------
28
+
29
+ In your Adhearsion app configuration file, add the following values:
30
+
31
+ ```ruby
32
+ Adhearsion.config[:adhearsion_mongoid] do |config|
33
+ config.models_paths = "lib/models"
34
+ config.config_path = "config/mongoid.yml"
35
+ end
36
+ ```
37
+
38
+ Mongoid configuration
39
+ ---------------------
40
+
41
+ By default, simply use "config/mongoid.yml" configuration file.
42
+
43
+ Usage
44
+ -----
45
+
46
+ Simply place your models in in your model directory ("lib/models" by default) and thats all.
47
+
48
+
49
+ Author
50
+ ------
51
+
52
+ Original author: [Florent Morin](https://github.com/florentmorin)
53
+ (adapted from [Juan de Bravo](https://github.com/juandebravo) work)
54
+ Special Thanks
55
+ --------------
56
+
57
+ Thanks to [Juan de Bravo](https://github.com/juandebravo) for the [adhearsion-activerecord](https://github.com/adhearsion/adhearsion-activerecord) plugin
58
+ My plugin was simply adapted from it.
59
+
60
+ Links
61
+ -----
62
+ * [Source](https://github.com/morin-innovation/adhearsion-mongoid)
63
+ * [Documentation](http://rdoc.info/github/morin-innovation/adhearsion-mongoid/master/frames)
64
+ * [Bug Tracker](https://github.com/morin-innovation/adhearsion-mongoid/issues)
65
+
66
+ Note on Patches/Pull Requests
67
+ -----------------------------
68
+
69
+ * Fork the project.
70
+ * Make your feature addition or bug fix.
71
+ * Add tests for it. This is important so I don't break it in a future version unintentionally.
72
+ * Commit, do not mess with rakefile, version, or history.
73
+ * If you want to have your own version, that is fine but bump version in a commit by itself so I can ignore when I pull
74
+ * Send me a pull request. Bonus points for topic branches.
75
+
76
+ Copyright
77
+ ---------
78
+
79
+ Check [License file](https://github.com/morin-innovation/adhearsion-mongoid/blob/master/LICENSE)
data/Rakefile ADDED
@@ -0,0 +1,13 @@
1
+ require "bundler/gem_tasks"
2
+ require "bundler/setup"
3
+
4
+
5
+ require 'rspec/core'
6
+ require 'rspec/core/rake_task'
7
+
8
+ RSpec::Core::RakeTask.new(:spec) do |spec|
9
+ spec.pattern = 'spec/**/*_spec.rb'
10
+ spec.rspec_opts = '--colour --format doc'
11
+ end
12
+
13
+ task :default => :spec
@@ -0,0 +1 @@
1
+ require 'adhearsion/mongoid'
@@ -0,0 +1,12 @@
1
+ require "adhearsion"
2
+ require 'mongoid'
3
+
4
+ require "active_support/dependencies/autoload"
5
+
6
+ require "adhearsion/mongoid/version"
7
+ require "adhearsion/mongoid/plugin"
8
+
9
+ module Adhearsion
10
+ module Mongoid
11
+ end
12
+ end
@@ -0,0 +1,26 @@
1
+ module Adhearsion
2
+ module Mongoid
3
+
4
+ ##
5
+ # Adhearsion Plugin that defines the Mongoid configuration options
6
+ # and includes a hook to start the Mongoid service in Adhearsion initialization process
7
+ class Plugin < Adhearsion::Plugin
8
+ extend ActiveSupport::Autoload
9
+
10
+ autoload :Service, 'adhearsion/mongoid/plugin/service'
11
+
12
+ # Configure models path ('lib/models' by default) and Mongoid configuration path ('config/mongoid.yml' by default)
13
+ config :adhearsion_mongoid do
14
+ models_paths ['lib/models'], :desc => 'paths to directories containing models files to load'
15
+ config_path 'config/mongoid.yml', :desc => 'path to Mongoid configuration file'
16
+ end
17
+
18
+ # Include the Mongoid service in plugins initialization process
19
+ init :adhearsion_mongoid do
20
+ Service.start
21
+ end
22
+
23
+ end
24
+
25
+ end
26
+ end
@@ -0,0 +1,65 @@
1
+ module Adhearsion
2
+ module Mongoid
3
+ class Plugin
4
+ class Service
5
+ class << self
6
+
7
+ ##
8
+ # Load the mongoid preferences, models and initiate logger
9
+ def start
10
+ logger.info "Loading Mongoid preferences"
11
+
12
+ params = config.to_hash.select { |k,v| !v.nil? }
13
+
14
+ ::Mongoid.load!(*params.delete(:config_path), ENV['AHN_ENV'])
15
+
16
+ logger.info "Loading Mongoid models"
17
+ require_models(*params.delete(:models_paths))
18
+
19
+ logger.info "Loading Mongoid logger"
20
+ ::Mongoid.logger = logger
21
+ ::Moped.logger = logger
22
+
23
+ logger.info "Mongoid successfully configured"
24
+ end
25
+
26
+ ##
27
+ # stop service (unused)
28
+ def stop
29
+ end
30
+
31
+ private
32
+
33
+ ##
34
+ # models are '.rb' file in models directory
35
+ def require_models(*paths)
36
+ paths.each do |path|
37
+ Dir.foreach(path) do |filename|
38
+ pn = Pathname.new path
39
+
40
+ if pn.relative?
41
+ root_path = Adhearsion.config.root
42
+ root_path ||= Dir.pwd
43
+ full_path = File.join root_path, path, filename
44
+ else
45
+ full_path = File.join path, filename
46
+ end
47
+
48
+ if File.file? full_path and File.extname(full_path) == ".rb"
49
+ require full_path
50
+ end
51
+ end
52
+ end
53
+ end
54
+
55
+ ##
56
+ # Access to mongoid plugin configuration
57
+ def config
58
+ @config ||= Plugin.config
59
+ end
60
+
61
+ end # class << self
62
+ end # Service
63
+ end # Plugin
64
+ end # Mongoid
65
+ end # Adhearsion
@@ -0,0 +1,5 @@
1
+ module Adhearsion
2
+ module Mongoid
3
+ VERSION = "0.1.0"
4
+ end
5
+ end
@@ -0,0 +1,53 @@
1
+ require 'spec_helper'
2
+
3
+ ENV['AHN_ENV'] = 'test'
4
+
5
+ describe Adhearsion::Mongoid::Plugin::Service do
6
+
7
+ describe "when starting the Mongoid connection" do
8
+
9
+ def tmp_models_dir_path
10
+ path = File.join Dir.tmpdir, "models"
11
+
12
+ unless File.directory? path
13
+ FileUtils.mkdir path
14
+ end
15
+
16
+ path
17
+ end
18
+
19
+ def create_tempmodel_with_contents(contents)
20
+ path = File.join tmp_models_dir_path, "user.rb"
21
+ file = File.new(path, "w+")
22
+ file.puts contents
23
+ file.flush
24
+ path
25
+ end
26
+
27
+ def sample_user_model
28
+ <<-CODE
29
+ class User
30
+ include Mongoid::Document
31
+
32
+ field :name, type: String
33
+ end
34
+ CODE
35
+ end
36
+
37
+ it "should make any required models available" do
38
+ path = create_tempmodel_with_contents sample_user_model
39
+
40
+ Adhearsion.config.adhearsion_mongoid.models_paths = [tmp_models_dir_path]
41
+ Adhearsion::Mongoid::Plugin::Service.start
42
+
43
+ u = User.new
44
+ u.should respond_to :name
45
+
46
+ File.delete path
47
+
48
+ Dir.delete tmp_models_dir_path
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ describe Adhearsion::Mongoid::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_mongoid.should be_instance_of Loquacious::Configuration
9
+ end
10
+
11
+ it "should configure properly the models_paths" do
12
+ Adhearsion.config[:adhearsion_mongoid].models_paths.class.should == Array
13
+ end
14
+
15
+ end
16
+
17
+ describe "while loading plugins" do
18
+ it "should load the init block and start the service" do
19
+ Adhearsion::Mongoid::Plugin::Service.should_receive(:start).once.and_return true
20
+ Adhearsion::Plugin.init_plugins
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ describe Adhearsion::Mongoid do
4
+
5
+ subject { Adhearsion::Mongoid }
6
+
7
+ it "should be a module" do
8
+ subject.should be_kind_of Module
9
+ end
10
+
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'adhearsion'
2
+ require 'adhearsion/mongoid'
3
+
4
+ RSpec.configure do |config|
5
+ config.color_enabled = true
6
+ config.tty = true
7
+
8
+ config.filter_run :focus => true
9
+ config.run_all_when_everything_filtered = true
10
+ end
11
+
metadata ADDED
@@ -0,0 +1,145 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: adhearsion-mongoid
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Florent Morin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2013-08-30 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: adhearsion
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: '2.4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: '2.4'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activesupport
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: 3.0.10
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: 3.0.10
41
+ - !ruby/object:Gem::Dependency
42
+ name: mongoid
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: '1.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rspec
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '2.5'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '2.5'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rake
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '>='
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '>='
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ description: This gem provides an Adhearsion plugin to handle the Mongoid and database
98
+ integration
99
+ email:
100
+ - florent.morin@morin-innovation.com
101
+ executables: []
102
+ extensions: []
103
+ extra_rdoc_files: []
104
+ files:
105
+ - lib/adhearsion/mongoid/plugin/service.rb
106
+ - lib/adhearsion/mongoid/plugin.rb
107
+ - lib/adhearsion/mongoid/version.rb
108
+ - lib/adhearsion/mongoid.rb
109
+ - lib/adhearsion-mongoid.rb
110
+ - README.md
111
+ - Rakefile
112
+ - Gemfile
113
+ - spec/adhearsion/mongoid/plugin/service_spec.rb
114
+ - spec/adhearsion/mongoid/plugin_spec.rb
115
+ - spec/adhearsion/mongoid_spec.rb
116
+ - spec/spec_helper.rb
117
+ homepage: https://github.com/morin-innovation
118
+ licenses: []
119
+ metadata: {}
120
+ post_install_message:
121
+ rdoc_options: []
122
+ require_paths:
123
+ - lib
124
+ required_ruby_version: !ruby/object:Gem::Requirement
125
+ requirements:
126
+ - - '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ required_rubygems_version: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ requirements: []
135
+ rubyforge_project: adhearsion-mongoid
136
+ rubygems_version: 2.0.7
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: This gem provides an Adhearsion plugin to handle the Mongoid and database
140
+ integration
141
+ test_files:
142
+ - spec/adhearsion/mongoid/plugin/service_spec.rb
143
+ - spec/adhearsion/mongoid/plugin_spec.rb
144
+ - spec/adhearsion/mongoid_spec.rb
145
+ - spec/spec_helper.rb