seedable 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,10 @@
1
+ tmp
2
+ *.gem
3
+ .bundle
4
+ Gemfile.lock
5
+ pkg/*
6
+ db/*.sqlite3
7
+ spec/*.log
8
+ *.rbc
9
+ html
10
+ coverage
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use 1.9.2@seedable --create
data/.travis.yml ADDED
@@ -0,0 +1,7 @@
1
+ rvm:
2
+ - 1.8.7
3
+ - 1.9.2
4
+ script: "bundle exec rake spec"
5
+ gemfile:
6
+ - gemfiles/rails-3.1.0.gemfile
7
+ - gemfiles/rails-master.gemfile
data/Appraisals ADDED
@@ -0,0 +1,9 @@
1
+ # encoding: UTF-8
2
+
3
+ appraise "rails-master" do
4
+ gem "rails", :git => "git://github.com/rails/rails.git"
5
+ end
6
+
7
+ appraise "rails-3.1.0" do
8
+ gem "rails", "3.1.0"
9
+ end
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in seedable.gemspec
4
+ gemspec
data/Guardfile ADDED
@@ -0,0 +1,9 @@
1
+ # A sample Guardfile
2
+ # More info at https://github.com/guard/guard#readme
3
+
4
+ guard 'rspec', :version => 2 do
5
+ watch(%r{^spec/.+_spec\.rb$})
6
+ watch(%r{^lib/(.+)\.rb$}) { "spec/" }
7
+ watch('spec/spec_helper.rb') { "spec/" }
8
+ end
9
+
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2011 Christopher Meiklejohn
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,95 @@
1
+ = Seedable
2
+
3
+ Data import and export for rails, to assist in seeding development
4
+ databases from production.
5
+
6
+ == What is Seedable?
7
+
8
+ Seedable is a mixin to select groups of objects, and export them via
9
+ serialized JSON, to be reimported later. The goal, is less to maintain
10
+ a consistent database state, but for quick dumping and restoring of data
11
+ between environments, to seed your database.
12
+
13
+ == Usage
14
+
15
+ Using Seedable is easy!
16
+
17
+ === How do I include it?
18
+
19
+ Add the gem.
20
+
21
+ gem 'seedable'
22
+
23
+ Include the module:
24
+
25
+ include Seedable
26
+
27
+ In the models you want to export together, place the following:
28
+
29
+ seedable
30
+
31
+ === Exporting records
32
+
33
+ To export, call:
34
+
35
+ json = @garage.to_seedable
36
+
37
+ By default, seedable will traverse all active\_record associations and
38
+ export all of their attributes. To exclude associations, do the following:
39
+
40
+ seedable :include_associations => [:cars, :bikes]
41
+
42
+ You can also call it after the fact:
43
+
44
+ Garage.include_associations([:cars])
45
+
46
+ To filter attributes:
47
+
48
+ seedable :filter_attributes => [:id]
49
+
50
+ You can also call it after the fact:
51
+
52
+ Garage.filter_attributes([:id])
53
+
54
+ You can also export an array of disperse object types:
55
+
56
+ [@garage, @car, @garage2, @bike].to_seedable
57
+
58
+ === Importing records
59
+
60
+ To import:
61
+
62
+ Garage.from_seedable(json)
63
+
64
+ or, if you have JSON from a unknown object type and want it to return
65
+ the proper object type:
66
+
67
+ Seedable.from_seedable(garage_json) # Returns Garage object.
68
+
69
+ or, an array of different object types:
70
+
71
+ json = [@garage, @car, @garage2, @bike].to_seedable
72
+ Seedable.from_seedable(json) # Returns array of [Garage, Car, Garage, Bike]
73
+
74
+ == Caveats
75
+
76
+ This is the first release, and yes, there are a bunch of caveats.
77
+
78
+ === Compatibility
79
+
80
+ 1. Compatible and tested under rails 3.1 and rails-master.
81
+ 2. Compatible and tested under ruby 1.9.2.
82
+
83
+ === Exporting with primary keys
84
+
85
+ 1. Importing objects with associated objects by primary key will only
86
+ work on rails master. This is because the code relies on mass
87
+ assignment changes/abstractions destined for rails-3.2.x.
88
+
89
+ == License
90
+
91
+ Seedable is Copyright © 2011 Christopher Meiklejohn. It is free software, and may be redistributed under the terms specified in the LICENSE file.
92
+
93
+ == About
94
+
95
+ The seedable gem was written by {Christopher Meiklejohn}[mailto:cmeiklejohn@swipely.com] from {Swipely, Inc.}[http://www.swipely.com].
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ # encoding: utf-8
2
+
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+ require 'bundler/gem_tasks'
6
+ require 'rake'
7
+ require 'rdoc/task'
8
+ require 'rubygems/package_task'
9
+ require 'rspec/core/rake_task'
10
+ require 'appraisal'
11
+
12
+ desc "Default: run the specs"
13
+ task :default => [:all]
14
+
15
+ desc 'Test the plugin under all supported Rails versions.'
16
+ task :all => ["appraisal:install"] do |t|
17
+ exec('rake appraisal spec')
18
+ end
19
+
20
+ RSpec::Core::RakeTask.new do |t|
21
+ t.pattern = 'spec/**/*_spec.rb'
22
+ end
23
+
24
+ RDoc::Task.new do |rdoc|
25
+ rdoc.main = "README.rdoc"
26
+ rdoc.rdoc_files.include("README.rdoc", "lib/**/*.rb")
27
+ rdoc.options << '-f' << 'horo'
28
+ end
data/db/schema.rb ADDED
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+
3
+ ActiveRecord::Schema.define do
4
+ self.verbose = false
5
+
6
+ create_table :garages, :force => true do |t|
7
+ t.string :name
8
+ t.timestamps
9
+ end
10
+
11
+ create_table :filtered_garages, :force => true do |t|
12
+ t.string :name
13
+ t.timestamps
14
+ end
15
+
16
+ create_table :cars, :force => true do |t|
17
+ t.string :make
18
+ t.string :model
19
+ t.integer :garage_id
20
+ t.timestamps
21
+ end
22
+
23
+ create_table :bikes, :force => true do |t|
24
+ t.integer :garage_id
25
+ t.timestamps
26
+ end
27
+
28
+ create_table :drivers, :force => true do |t|
29
+ t.string :name
30
+ t.integer :car_id
31
+ t.timestamps
32
+ end
33
+
34
+ end
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", "3.1.0"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,149 @@
1
+ PATH
2
+ remote: /home/cmeiklejohn/Repositories/seedable
3
+ specs:
4
+ seedable (0.0.1)
5
+ rails (>= 3.1.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ actionmailer (3.1.0)
11
+ actionpack (= 3.1.0)
12
+ mail (~> 2.3.0)
13
+ actionpack (3.1.0)
14
+ activemodel (= 3.1.0)
15
+ activesupport (= 3.1.0)
16
+ builder (~> 3.0.0)
17
+ erubis (~> 2.7.0)
18
+ i18n (~> 0.6)
19
+ rack (~> 1.3.2)
20
+ rack-cache (~> 1.0.3)
21
+ rack-mount (~> 0.8.2)
22
+ rack-test (~> 0.6.1)
23
+ sprockets (~> 2.0.0)
24
+ activemodel (3.1.0)
25
+ activesupport (= 3.1.0)
26
+ bcrypt-ruby (~> 3.0.0)
27
+ builder (~> 3.0.0)
28
+ i18n (~> 0.6)
29
+ activerecord (3.1.0)
30
+ activemodel (= 3.1.0)
31
+ activesupport (= 3.1.0)
32
+ arel (~> 2.2.1)
33
+ tzinfo (~> 0.3.29)
34
+ activeresource (3.1.0)
35
+ activemodel (= 3.1.0)
36
+ activesupport (= 3.1.0)
37
+ activesupport (3.1.0)
38
+ multi_json (~> 1.0)
39
+ appraisal (0.3.8)
40
+ bundler
41
+ rake
42
+ arel (2.2.1)
43
+ bcrypt-ruby (3.0.0)
44
+ builder (3.0.0)
45
+ diesel (0.1.5)
46
+ railties
47
+ diff-lcs (1.1.3)
48
+ erubis (2.7.0)
49
+ factory_girl (2.0.5)
50
+ factory_girl_rails (1.1.0)
51
+ factory_girl (~> 2.0.0)
52
+ railties (>= 3.0.0)
53
+ ffi (1.0.9)
54
+ guard (0.6.3)
55
+ thor (~> 0.14.6)
56
+ guard-rspec (0.4.3)
57
+ guard (>= 0.4.0)
58
+ hike (1.2.1)
59
+ horo (1.0.3)
60
+ rdoc (>= 2.5)
61
+ i18n (0.6.0)
62
+ libnotify (0.5.7)
63
+ mail (2.3.0)
64
+ i18n (>= 0.4.0)
65
+ mime-types (~> 1.16)
66
+ treetop (~> 1.4.8)
67
+ mime-types (1.16)
68
+ mocha (0.9.12)
69
+ multi_json (1.0.3)
70
+ polyglot (0.3.2)
71
+ rack (1.3.2)
72
+ rack-cache (1.0.3)
73
+ rack (>= 0.4)
74
+ rack-mount (0.8.3)
75
+ rack (>= 1.0.0)
76
+ rack-ssl (1.3.2)
77
+ rack
78
+ rack-test (0.6.1)
79
+ rack (>= 1.0)
80
+ rails (3.1.0)
81
+ actionmailer (= 3.1.0)
82
+ actionpack (= 3.1.0)
83
+ activerecord (= 3.1.0)
84
+ activeresource (= 3.1.0)
85
+ activesupport (= 3.1.0)
86
+ bundler (~> 1.0)
87
+ railties (= 3.1.0)
88
+ railties (3.1.0)
89
+ actionpack (= 3.1.0)
90
+ activesupport (= 3.1.0)
91
+ rack-ssl (~> 1.3.2)
92
+ rake (>= 0.8.7)
93
+ rdoc (~> 3.4)
94
+ thor (~> 0.14.6)
95
+ rake (0.9.2)
96
+ rb-inotify (0.8.6)
97
+ ffi (>= 0.5.0)
98
+ rdoc (3.9.4)
99
+ rspec (2.6.0)
100
+ rspec-core (~> 2.6.0)
101
+ rspec-expectations (~> 2.6.0)
102
+ rspec-mocks (~> 2.6.0)
103
+ rspec-core (2.6.4)
104
+ rspec-expectations (2.6.0)
105
+ diff-lcs (~> 1.1.2)
106
+ rspec-mocks (2.6.0)
107
+ rspec-rails (2.6.1)
108
+ actionpack (~> 3.0)
109
+ activesupport (~> 3.0)
110
+ railties (~> 3.0)
111
+ rspec (~> 2.6.0)
112
+ simplecov (0.4.2)
113
+ simplecov-html (~> 0.4.4)
114
+ simplecov-html (0.4.5)
115
+ sprockets (2.0.0)
116
+ hike (~> 1.2)
117
+ rack (~> 1.0)
118
+ tilt (!= 1.3.0, ~> 1.1)
119
+ sqlite3 (1.3.4)
120
+ thor (0.14.6)
121
+ tilt (1.3.3)
122
+ timecop (0.3.5)
123
+ treetop (1.4.10)
124
+ polyglot
125
+ polyglot (>= 0.3.1)
126
+ tzinfo (0.3.29)
127
+
128
+ PLATFORMS
129
+ ruby
130
+
131
+ DEPENDENCIES
132
+ appraisal (~> 0.3.5)
133
+ bundler (~> 1.0.0)
134
+ diesel
135
+ factory_girl
136
+ factory_girl_rails
137
+ guard
138
+ guard-rspec
139
+ horo
140
+ libnotify
141
+ mocha
142
+ rails (= 3.1.0)
143
+ rb-inotify
144
+ rspec
145
+ rspec-rails
146
+ seedable!
147
+ simplecov
148
+ sqlite3
149
+ timecop
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gem "rails", :git=>"git://github.com/rails/rails.git"
6
+
7
+ gemspec :path=>"../"
@@ -0,0 +1,153 @@
1
+ GIT
2
+ remote: git://github.com/rails/rails.git
3
+ revision: 67790644372ad3a771810f1d6d99687d795789ea
4
+ specs:
5
+ actionmailer (3.2.0.beta)
6
+ actionpack (= 3.2.0.beta)
7
+ mail (~> 2.3.0)
8
+ actionpack (3.2.0.beta)
9
+ activemodel (= 3.2.0.beta)
10
+ activesupport (= 3.2.0.beta)
11
+ builder (~> 3.0.0)
12
+ erubis (~> 2.7.0)
13
+ i18n (~> 0.6)
14
+ rack (~> 1.3.2)
15
+ rack-cache (~> 1.0.3)
16
+ rack-mount (~> 0.8.2)
17
+ rack-test (~> 0.6.1)
18
+ sprockets (~> 2.0.0)
19
+ activemodel (3.2.0.beta)
20
+ activesupport (= 3.2.0.beta)
21
+ builder (~> 3.0.0)
22
+ i18n (~> 0.6)
23
+ activerecord (3.2.0.beta)
24
+ activemodel (= 3.2.0.beta)
25
+ activesupport (= 3.2.0.beta)
26
+ arel (~> 2.2.1)
27
+ tzinfo (~> 0.3.29)
28
+ activeresource (3.2.0.beta)
29
+ activemodel (= 3.2.0.beta)
30
+ activesupport (= 3.2.0.beta)
31
+ activesupport (3.2.0.beta)
32
+ i18n (~> 0.6)
33
+ multi_json (~> 1.0)
34
+ rails (3.2.0.beta)
35
+ actionmailer (= 3.2.0.beta)
36
+ actionpack (= 3.2.0.beta)
37
+ activerecord (= 3.2.0.beta)
38
+ activeresource (= 3.2.0.beta)
39
+ activesupport (= 3.2.0.beta)
40
+ bundler (~> 1.0)
41
+ railties (= 3.2.0.beta)
42
+ railties (3.2.0.beta)
43
+ actionpack (= 3.2.0.beta)
44
+ activesupport (= 3.2.0.beta)
45
+ rack-ssl (~> 1.3.2)
46
+ rake (>= 0.8.7)
47
+ rdoc (~> 3.4)
48
+ thor (~> 0.14.6)
49
+
50
+ PATH
51
+ remote: /home/cmeiklejohn/Repositories/seedable
52
+ specs:
53
+ seedable (0.0.1)
54
+ rails (>= 3.1.0)
55
+
56
+ GEM
57
+ remote: http://rubygems.org/
58
+ specs:
59
+ appraisal (0.3.8)
60
+ bundler
61
+ rake
62
+ arel (2.2.1)
63
+ builder (3.0.0)
64
+ diesel (0.1.5)
65
+ railties
66
+ diff-lcs (1.1.3)
67
+ erubis (2.7.0)
68
+ factory_girl (2.0.5)
69
+ factory_girl_rails (1.1.0)
70
+ factory_girl (~> 2.0.0)
71
+ railties (>= 3.0.0)
72
+ ffi (1.0.9)
73
+ guard (0.6.3)
74
+ thor (~> 0.14.6)
75
+ guard-rspec (0.4.3)
76
+ guard (>= 0.4.0)
77
+ hike (1.2.1)
78
+ horo (1.0.3)
79
+ rdoc (>= 2.5)
80
+ i18n (0.6.0)
81
+ libnotify (0.5.7)
82
+ mail (2.3.0)
83
+ i18n (>= 0.4.0)
84
+ mime-types (~> 1.16)
85
+ treetop (~> 1.4.8)
86
+ mime-types (1.16)
87
+ mocha (0.9.12)
88
+ multi_json (1.0.3)
89
+ polyglot (0.3.2)
90
+ rack (1.3.2)
91
+ rack-cache (1.0.3)
92
+ rack (>= 0.4)
93
+ rack-mount (0.8.3)
94
+ rack (>= 1.0.0)
95
+ rack-ssl (1.3.2)
96
+ rack
97
+ rack-test (0.6.1)
98
+ rack (>= 1.0)
99
+ rake (0.9.2)
100
+ rb-inotify (0.8.6)
101
+ ffi (>= 0.5.0)
102
+ rdoc (3.9.4)
103
+ rspec (2.6.0)
104
+ rspec-core (~> 2.6.0)
105
+ rspec-expectations (~> 2.6.0)
106
+ rspec-mocks (~> 2.6.0)
107
+ rspec-core (2.6.4)
108
+ rspec-expectations (2.6.0)
109
+ diff-lcs (~> 1.1.2)
110
+ rspec-mocks (2.6.0)
111
+ rspec-rails (2.6.1)
112
+ actionpack (~> 3.0)
113
+ activesupport (~> 3.0)
114
+ railties (~> 3.0)
115
+ rspec (~> 2.6.0)
116
+ simplecov (0.4.2)
117
+ simplecov-html (~> 0.4.4)
118
+ simplecov-html (0.4.5)
119
+ sprockets (2.0.0)
120
+ hike (~> 1.2)
121
+ rack (~> 1.0)
122
+ tilt (!= 1.3.0, ~> 1.1)
123
+ sqlite3 (1.3.4)
124
+ thor (0.14.6)
125
+ tilt (1.3.3)
126
+ timecop (0.3.5)
127
+ treetop (1.4.10)
128
+ polyglot
129
+ polyglot (>= 0.3.1)
130
+ tzinfo (0.3.29)
131
+
132
+ PLATFORMS
133
+ ruby
134
+
135
+ DEPENDENCIES
136
+ appraisal (~> 0.3.5)
137
+ bundler (~> 1.0.0)
138
+ diesel
139
+ factory_girl
140
+ factory_girl_rails
141
+ guard
142
+ guard-rspec
143
+ horo
144
+ libnotify
145
+ mocha
146
+ rails!
147
+ rb-inotify
148
+ rspec
149
+ rspec-rails
150
+ seedable!
151
+ simplecov
152
+ sqlite3
153
+ timecop