mongoid_seeder 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mongoid_seeder (0.0.3)
4
+ mongoid_seeder (0.0.4)
5
5
  mixlib-config (~> 1.1)
6
6
  mongoid (~> 3.1)
7
7
  mongoid-shell (= 0.2.0)
@@ -27,7 +27,7 @@ GEM
27
27
  i18n
28
28
  mongoid
29
29
  moped (1.5.1)
30
- multi_json (1.8.0)
30
+ multi_json (1.8.1)
31
31
  origin (1.1.0)
32
32
  rake (10.1.0)
33
33
  tzinfo (0.3.37)
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # MongoidSeeder
2
2
 
3
- TODO: Write a gem description
3
+ Provides basic behavior to seed data while using Mongoid.
4
4
 
5
5
  ## Installation
6
6
 
@@ -18,7 +18,164 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- TODO: Write usage instructions here
21
+ Place an output of `mongodump` in `db/seed_data/`. This will be used to seed your database. *View the Custom Behavior section to learn how to override this path.*
22
+
23
+ ### Rake Task
24
+
25
+ #### Rails
26
+
27
+ In rails, add this to `db/seeds.rb` to bootstrap the default seed rake tasks:
28
+
29
+ ```ruby
30
+ require 'mongoid_seeder'
31
+
32
+ puts "Loading Seed Data"
33
+
34
+ if some_condition_to_decide_to_seed_or_not
35
+ puts "Importing data at #{MongoidSeeder.db_path}\n"
36
+ MongoidSeeder.seed
37
+ puts "\nFinished.\n"
38
+ else
39
+ puts "Data already exists, no need to seed."
40
+ end
41
+ ```
42
+
43
+ #### Ruby
44
+
45
+ If you are not using rails, or would like more functionality with rake, add the following to `lib/tasks/db.rake`:
46
+
47
+ ```ruby
48
+ namespace :db do
49
+ desc 'Seed the database'
50
+ task :seed => :prepare do
51
+ puts "Loading Seed Data"
52
+
53
+ if some_condition_to_decide_to_seed_or_not
54
+ MongoidSeeder.seed
55
+ puts "Importing data at #{MongoidSeeder.db_path}"
56
+ else
57
+ puts "Data already exists, no need to seed."
58
+ end
59
+ end
60
+
61
+ desc 'Drops the database'
62
+ task :drop => :prepare do
63
+ MongoidSeeder.drop
64
+ end
65
+
66
+ desc 'Dumps the database to the seed location'
67
+ task :dump => :prepare do
68
+ MongoidSeeder.dump
69
+ puts "Dumping data to #{MongoidSeeder.db_path}"
70
+ end
71
+
72
+ desc 'Drops db and seeds it'
73
+ task :reseed => [:drop, :seed]
74
+
75
+ task :prepare do
76
+ require 'mongoid_seeder'
77
+ # Do stuff to setup your app environment
78
+ end
79
+ end
80
+ ```
81
+
82
+ ### Rspec
83
+
84
+ Use within your rspec tests like so:
85
+
86
+ ```ruby
87
+ require 'mongoid_seeder'
88
+
89
+ RSpec.configure do |config|
90
+ config.before(:suite) do
91
+ MongoidSeeder.before_suite
92
+ end
93
+
94
+ config.before(:each) do
95
+ MongoidSeeder.before_each
96
+ end
97
+
98
+ config.after(:each) do
99
+ MongoidSeeder.after_each
100
+ end
101
+
102
+ config.after(:suite) do
103
+ MongoidSeeder.after_suite
104
+ end
105
+ end
106
+ ```
107
+
108
+ ### Cucumber
109
+
110
+ ```ruby
111
+ require 'mongoid_seeder'
112
+
113
+ Before do
114
+ MongoidSeeder.before_suite unless @cucumber_started # Only happen once
115
+ @cucumber_started = true
116
+ MongoidSeeder.before_each
117
+ end
118
+
119
+ After do
120
+ MongoidSeeder.after_each
121
+ end
122
+
123
+ at_exit do
124
+ MongoidSeeder.after_suite
125
+ end
126
+ ```
127
+
128
+ ## Default Behavior
129
+
130
+ By default these methods run the following:
131
+
132
+ Method | Default Behavior
133
+ ---|---
134
+ `before_suite` | Seeds the database
135
+ `before_each` | no-op
136
+ `after_each` | no-op
137
+ `after_suite` | Drops the database
138
+
139
+ ## Custom Behavior
140
+
141
+ ### Bootstrapping the mongoid seeder
142
+
143
+ To bootstrap the seeder with custom configuration, place all configuration in a file located at `config/mongoid_seeder.rb`. This file will be loaded when the seeder is ran if it exists.
144
+
145
+ ### DB Path
146
+
147
+ You can configure the location where the seed data is stored by doing the following:
148
+
149
+ ```ruby
150
+ require_relative '../config/environment'
151
+
152
+ MongoidSeeder::Config.seed_dir = "/path/to/my/seeds"
153
+ ```
154
+
155
+ You may want to do this if you want to use different sets of seed data for different environments.
156
+
157
+ ### Callback Methods
158
+
159
+ *The default behavior cannot be overridden, you can only prepend to the behavior*
160
+
161
+ This means that you can add additional steps to be ran for each method if you would like.
162
+
163
+ ```
164
+ MongoidSeeder::Config.before_suite = -> do
165
+ MyApp.load_env
166
+ end
167
+
168
+ # Must use old lambda syntax because of the argument
169
+ # This will drop all collections that includes "v2" in the collection name
170
+ # after each test is ran
171
+ MongoidSeeder::Config.condition_to_drop_collection = lambda do |a|
172
+ a.name.include?('v2')
173
+ end
174
+ ```
175
+
176
+ ## Owners
177
+
178
+ Developed by [@coffeencoke](http://github.com/coffeencoke), [@dcameronmauch](http://github.com/dcameronmauch), devs on a team at [Asynchrony](http://asynchrony.com).
22
179
 
23
180
  ## Contributing
24
181
 
@@ -47,6 +47,6 @@ module MongoidSeeder
47
47
  end
48
48
 
49
49
  def self.after_tests
50
- Mongoid.session(:default).collections.select{|a| Config.condition_to_drop_collection.call(a) }.each(&:drop)
50
+ Mongoid.session(:default).collections.select{|a| Config.condition_to_drop_collection.call(a) }.each{|a| a.where.remove_all }
51
51
  end
52
52
  end
@@ -1,3 +1,3 @@
1
1
  module MongoidSeeder
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_seeder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-09-19 00:00:00.000000000 Z
14
+ date: 2013-10-09 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: bundler
@@ -126,7 +126,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
126
126
  version: '0'
127
127
  segments:
128
128
  - 0
129
- hash: -951118916329851109
129
+ hash: 4468195172537555349
130
130
  required_rubygems_version: !ruby/object:Gem::Requirement
131
131
  none: false
132
132
  requirements:
@@ -135,7 +135,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
135
  version: '0'
136
136
  segments:
137
137
  - 0
138
- hash: -951118916329851109
138
+ hash: 4468195172537555349
139
139
  requirements: []
140
140
  rubyforge_project:
141
141
  rubygems_version: 1.8.25