dump 1.0.2 → 1.0.3
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 +15 -0
- data/.gitignore +1 -0
- data/.travis.database.yml +14 -0
- data/.travis.yml +30 -0
- data/Gemfile +20 -0
- data/LICENSE.txt +1 -1
- data/README.markdown +5 -3
- data/dump.gemspec +1 -2
- data/lib/dump_rake/dump.rb +4 -0
- data/lib/dump_rake/dump_reader.rb +1 -1
- data/lib/dump_rake/dump_writer.rb +1 -1
- data/lib/dump_rake/table_manipulation.rb +1 -1
- data/spec/.gitignore +18 -0
- data/spec/cycle_spec.rb +22 -14
- data/spec/dummy-2.3/config/boot.rb +114 -0
- data/spec/dummy-2.3/config/database.yml +22 -0
- data/spec/dummy-2.3/config/environment.rb +41 -0
- data/spec/dummy-2.3/config/environments/development.rb +17 -0
- data/spec/dummy-2.3/config/environments/production.rb +28 -0
- data/spec/dummy-2.3/config/environments/test.rb +28 -0
- data/spec/dummy-2.3/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-2.3/config/initializers/cookie_verification_secret.rb +7 -0
- data/spec/dummy-2.3/config/initializers/inflections.rb +10 -0
- data/spec/{dummy-3.1.3 → dummy-2.3}/config/initializers/mime_types.rb +0 -0
- data/spec/dummy-2.3/config/initializers/new_rails_defaults.rb +21 -0
- data/spec/dummy-2.3/config/initializers/session_store.rb +15 -0
- data/spec/dummy-2.3/config/locales/en.yml +5 -0
- data/spec/dummy-2.3/config/routes.rb +43 -0
- data/spec/dummy-2.3/db/seeds.rb +7 -0
- data/spec/dummy-3.0/.gitignore +4 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config.ru +1 -1
- data/spec/dummy-3.0/config/application.rb +42 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/boot.rb +0 -0
- data/spec/dummy-3.0/config/database.yml +22 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/environment.rb +1 -1
- data/spec/dummy-3.0/config/environments/development.rb +26 -0
- data/spec/dummy-3.0/config/environments/production.rb +49 -0
- data/spec/dummy-3.0/config/environments/test.rb +35 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/initializers/inflections.rb +0 -0
- data/spec/dummy-3.0/config/initializers/mime_types.rb +5 -0
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/initializers/secret_token.rb +1 -1
- data/spec/{dummy-3.1.3 → dummy-3.0}/config/initializers/session_store.rb +2 -2
- data/spec/dummy-3.0/config/locales/en.yml +5 -0
- data/spec/dummy-3.0/config/routes.rb +58 -0
- data/spec/dummy-3.0/db/seeds.rb +7 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/.gitignore +0 -0
- data/spec/dummy-3.1/config.ru +4 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/application.rb +2 -7
- data/spec/dummy-3.1/config/boot.rb +6 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/database.yml +0 -0
- data/spec/dummy-3.1/config/environment.rb +5 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/environments/development.rb +1 -6
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/environments/production.rb +1 -14
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/environments/test.rb +1 -1
- data/spec/dummy-3.1/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-3.1/config/initializers/inflections.rb +10 -0
- data/spec/dummy-3.1/config/initializers/mime_types.rb +5 -0
- data/spec/dummy-3.1/config/initializers/secret_token.rb +7 -0
- data/spec/dummy-3.1/config/initializers/session_store.rb +8 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/initializers/wrap_parameters.rb +0 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/locales/en.yml +0 -0
- data/spec/{dummy-3.1.3 → dummy-3.1}/config/routes.rb +1 -1
- data/spec/{dummy-3.1.3 → dummy-3.1}/db/seeds.rb +0 -0
- data/spec/{dummy-3.1.3/app/mailers → dummy-3.1/log}/.gitkeep +0 -0
- data/spec/dummy-3.2/.gitignore +15 -0
- data/spec/dummy-3.2/config.ru +4 -0
- data/spec/dummy-3.2/config/application.rb +63 -0
- data/spec/dummy-3.2/config/boot.rb +6 -0
- data/spec/dummy-3.2/config/database.yml +25 -0
- data/spec/dummy-3.2/config/environment.rb +5 -0
- data/spec/dummy-3.2/config/environments/development.rb +32 -0
- data/spec/dummy-3.2/config/environments/production.rb +54 -0
- data/spec/dummy-3.2/config/environments/test.rb +37 -0
- data/spec/dummy-3.2/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-3.2/config/initializers/inflections.rb +15 -0
- data/spec/dummy-3.2/config/initializers/mime_types.rb +5 -0
- data/spec/dummy-3.2/config/initializers/secret_token.rb +7 -0
- data/spec/dummy-3.2/config/initializers/session_store.rb +8 -0
- data/spec/dummy-3.2/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy-3.2/config/locales/en.yml +5 -0
- data/spec/dummy-3.2/config/routes.rb +58 -0
- data/spec/dummy-3.2/db/seeds.rb +7 -0
- data/spec/{dummy-3.1.3/app/models → dummy-3.2/log}/.gitkeep +0 -0
- data/spec/dummy-4.0/.gitignore +16 -0
- data/spec/dummy-4.0/config.ru +4 -0
- data/spec/dummy-4.0/config/application.rb +31 -0
- data/spec/dummy-4.0/config/boot.rb +4 -0
- data/spec/dummy-4.0/config/database.yml +25 -0
- data/spec/dummy-4.0/config/environment.rb +5 -0
- data/spec/dummy-4.0/config/environments/development.rb +25 -0
- data/spec/dummy-4.0/config/environments/production.rb +65 -0
- data/spec/dummy-4.0/config/environments/test.rb +36 -0
- data/spec/dummy-4.0/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/dummy-4.0/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/dummy-4.0/config/initializers/inflections.rb +16 -0
- data/spec/dummy-4.0/config/initializers/mime_types.rb +5 -0
- data/spec/dummy-4.0/config/initializers/secret_token.rb +12 -0
- data/spec/dummy-4.0/config/initializers/session_store.rb +3 -0
- data/spec/dummy-4.0/config/initializers/wrap_parameters.rb +14 -0
- data/spec/dummy-4.0/config/locales/en.yml +23 -0
- data/spec/dummy-4.0/config/routes.rb +56 -0
- data/spec/dummy-4.0/db/seeds.rb +7 -0
- data/spec/{dummy-3.1.3/lib/assets/.gitkeep → dummy-4.0/log/.keep} +0 -0
- data/spec/lib/dump_rake/dump_reader_spec.rb +90 -89
- data/spec/lib/dump_rake/dump_spec.rb +9 -9
- data/spec/lib/dump_rake/dump_writer_spec.rb +79 -78
- data/spec/lib/dump_rake/rails_root_spec.rb +2 -2
- data/spec/lib/dump_rake/table_manipulation_spec.rb +10 -10
- data/spec/lib/dump_rake_spec.rb +34 -34
- data/spec/recipes/dump_spec.rb +34 -34
- data/spec/spec_helper.rb +35 -10
- data/spec/tasks/assets_spec.rb +6 -6
- metadata +240 -183
- data/spec/dummy-3.1.3/.rspec +0 -1
- data/spec/dummy-3.1.3/Gemfile +0 -14
- data/spec/dummy-3.1.3/Gemfile.lock +0 -133
- data/spec/dummy-3.1.3/README +0 -261
- data/spec/dummy-3.1.3/Rakefile +0 -7
- data/spec/dummy-3.1.3/app/assets/images/rails.png +0 -0
- data/spec/dummy-3.1.3/app/assets/javascripts/application.js +0 -9
- data/spec/dummy-3.1.3/app/assets/stylesheets/application.css +0 -7
- data/spec/dummy-3.1.3/app/controllers/application_controller.rb +0 -3
- data/spec/dummy-3.1.3/app/helpers/application_helper.rb +0 -2
- data/spec/dummy-3.1.3/app/views/layouts/application.html.erb +0 -14
- data/spec/dummy-3.1.3/doc/README_FOR_APP +0 -2
- data/spec/dummy-3.1.3/lib/tasks/.gitkeep +0 -0
- data/spec/dummy-3.1.3/log/.gitkeep +0 -0
- data/spec/dummy-3.1.3/public/404.html +0 -26
- data/spec/dummy-3.1.3/public/422.html +0 -26
- data/spec/dummy-3.1.3/public/500.html +0 -26
- data/spec/dummy-3.1.3/public/favicon.ico +0 -0
- data/spec/dummy-3.1.3/public/index.html +0 -241
- data/spec/dummy-3.1.3/public/robots.txt +0 -5
- data/spec/dummy-3.1.3/script/rails +0 -6
- data/spec/dummy-3.1.3/spec/spec_helper.rb +0 -32
- data/spec/dummy-3.1.3/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/dummy-3.1.3/vendor/plugins/.gitkeep +0 -0
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# Your secret key is used for verifying the integrity of signed cookies.
|
|
4
|
+
# If you change this key, all old signed cookies will become invalid!
|
|
5
|
+
|
|
6
|
+
# Make sure the secret is at least 30 characters and all random,
|
|
7
|
+
# no regular words or you'll be exposed to dictionary attacks.
|
|
8
|
+
# You can use `rake secret` to generate a secure secret key.
|
|
9
|
+
|
|
10
|
+
# Make sure your secret_key_base is kept private
|
|
11
|
+
# if you're sharing your code publicly.
|
|
12
|
+
Dummy40::Application.config.secret_key_base = '3586b42c7cccac1ba714e7321305ef092a00b11a01c36b1801fd3f5cb959396078f013a32d15a35b2a55a5c208a23daf4e9b3d91f0e8d0bd3ae4df2eea1a7ac7'
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Be sure to restart your server when you modify this file.
|
|
2
|
+
|
|
3
|
+
# This file contains settings for ActionController::ParamsWrapper which
|
|
4
|
+
# is enabled by default.
|
|
5
|
+
|
|
6
|
+
# Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array.
|
|
7
|
+
ActiveSupport.on_load(:action_controller) do
|
|
8
|
+
wrap_parameters format: [:json] if respond_to?(:wrap_parameters)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
# To enable root element in JSON for ActiveRecord objects.
|
|
12
|
+
# ActiveSupport.on_load(:active_record) do
|
|
13
|
+
# self.include_root_in_json = true
|
|
14
|
+
# end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# Files in the config/locales directory are used for internationalization
|
|
2
|
+
# and are automatically loaded by Rails. If you want to use locales other
|
|
3
|
+
# than English, add the necessary files in this directory.
|
|
4
|
+
#
|
|
5
|
+
# To use the locales, use `I18n.t`:
|
|
6
|
+
#
|
|
7
|
+
# I18n.t 'hello'
|
|
8
|
+
#
|
|
9
|
+
# In views, this is aliased to just `t`:
|
|
10
|
+
#
|
|
11
|
+
# <%= t('hello') %>
|
|
12
|
+
#
|
|
13
|
+
# To use a different locale, set it with `I18n.locale`:
|
|
14
|
+
#
|
|
15
|
+
# I18n.locale = :es
|
|
16
|
+
#
|
|
17
|
+
# This would use the information in config/locales/es.yml.
|
|
18
|
+
#
|
|
19
|
+
# To learn more, please read the Rails Internationalization guide
|
|
20
|
+
# available at http://guides.rubyonrails.org/i18n.html.
|
|
21
|
+
|
|
22
|
+
en:
|
|
23
|
+
hello: "Hello world"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
Dummy40::Application.routes.draw do
|
|
2
|
+
# The priority is based upon order of creation: first created -> highest priority.
|
|
3
|
+
# See how all your routes lay out with "rake routes".
|
|
4
|
+
|
|
5
|
+
# You can have the root of your site routed with "root"
|
|
6
|
+
# root 'welcome#index'
|
|
7
|
+
|
|
8
|
+
# Example of regular route:
|
|
9
|
+
# get 'products/:id' => 'catalog#view'
|
|
10
|
+
|
|
11
|
+
# Example of named route that can be invoked with purchase_url(id: product.id)
|
|
12
|
+
# get 'products/:id/purchase' => 'catalog#purchase', as: :purchase
|
|
13
|
+
|
|
14
|
+
# Example resource route (maps HTTP verbs to controller actions automatically):
|
|
15
|
+
# resources :products
|
|
16
|
+
|
|
17
|
+
# Example resource route with options:
|
|
18
|
+
# resources :products do
|
|
19
|
+
# member do
|
|
20
|
+
# get 'short'
|
|
21
|
+
# post 'toggle'
|
|
22
|
+
# end
|
|
23
|
+
#
|
|
24
|
+
# collection do
|
|
25
|
+
# get 'sold'
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
|
|
29
|
+
# Example resource route with sub-resources:
|
|
30
|
+
# resources :products do
|
|
31
|
+
# resources :comments, :sales
|
|
32
|
+
# resource :seller
|
|
33
|
+
# end
|
|
34
|
+
|
|
35
|
+
# Example resource route with more complex sub-resources:
|
|
36
|
+
# resources :products do
|
|
37
|
+
# resources :comments
|
|
38
|
+
# resources :sales do
|
|
39
|
+
# get 'recent', on: :collection
|
|
40
|
+
# end
|
|
41
|
+
# end
|
|
42
|
+
|
|
43
|
+
# Example resource route with concerns:
|
|
44
|
+
# concern :toggleable do
|
|
45
|
+
# post 'toggle'
|
|
46
|
+
# end
|
|
47
|
+
# resources :posts, concerns: :toggleable
|
|
48
|
+
# resources :photos, concerns: :toggleable
|
|
49
|
+
|
|
50
|
+
# Example resource route within a namespace:
|
|
51
|
+
# namespace :admin do
|
|
52
|
+
# # Directs /admin/products/* to Admin::ProductsController
|
|
53
|
+
# # (app/controllers/admin/products_controller.rb)
|
|
54
|
+
# resources :products
|
|
55
|
+
# end
|
|
56
|
+
end
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# This file should contain all the record creation needed to seed the database with its default values.
|
|
2
|
+
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
|
|
3
|
+
#
|
|
4
|
+
# Examples:
|
|
5
|
+
#
|
|
6
|
+
# cities = City.create([{ name: 'Chicago' }, { name: 'Copenhagen' }])
|
|
7
|
+
# Mayor.create(name: 'Emanuel', city: cities.first)
|
|
File without changes
|
|
@@ -22,16 +22,17 @@ DumpReader = DumpRake::DumpReader
|
|
|
22
22
|
describe DumpReader do
|
|
23
23
|
describe "restore" do
|
|
24
24
|
it "should create selves instance and open" do
|
|
25
|
-
@dump =
|
|
25
|
+
@dump = double('dump')
|
|
26
26
|
@dump.should_receive(:open)
|
|
27
27
|
DumpReader.should_receive(:new).with('/abc/123.tmp').and_return(@dump)
|
|
28
28
|
DumpReader.restore('/abc/123.tmp')
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
it "should call dump subroutines" do
|
|
32
|
-
@dump =
|
|
33
|
-
@dump.stub
|
|
34
|
-
|
|
32
|
+
@dump = double('dump')
|
|
33
|
+
@dump.stub(:open).and_yield(@dump)
|
|
34
|
+
@dump.stub(:silence).and_yield
|
|
35
|
+
DumpReader.stub(:new).and_return(@dump)
|
|
35
36
|
|
|
36
37
|
@dump.should_receive(:read_config).ordered
|
|
37
38
|
@dump.should_receive(:migrate_down).ordered
|
|
@@ -80,7 +81,7 @@ describe DumpReader do
|
|
|
80
81
|
end
|
|
81
82
|
|
|
82
83
|
it "should create selves instance and open" do
|
|
83
|
-
@dump =
|
|
84
|
+
@dump = double('dump')
|
|
84
85
|
@dump.should_receive(:open)
|
|
85
86
|
DumpReader.should_receive(:new).with('/abc/123.tmp').and_return(@dump)
|
|
86
87
|
DumpReader.summary('/abc/123.tmp')
|
|
@@ -95,18 +96,18 @@ describe DumpReader do
|
|
|
95
96
|
tables = {'a' => 10, 'b' => 20, 'c' => 666}
|
|
96
97
|
formatted_tables = ['a: 10 rows', 'b: 20 rows', 'c: 666 rows']
|
|
97
98
|
|
|
98
|
-
@dump =
|
|
99
|
-
@dump.stub
|
|
100
|
-
@dump.stub
|
|
101
|
-
DumpReader.stub
|
|
99
|
+
@dump = double('dump')
|
|
100
|
+
@dump.stub(:config).and_return(:tables => tables, :assets => assets)
|
|
101
|
+
@dump.stub(:open).and_yield(@dump)
|
|
102
|
+
DumpReader.stub(:new).and_return(@dump)
|
|
102
103
|
@dump.should_receive(:read_config)
|
|
103
104
|
|
|
104
|
-
@summary =
|
|
105
|
+
@summary = double('summary')
|
|
105
106
|
@summary.should_receive(:header).with('Tables')
|
|
106
107
|
@summary.should_receive(:data).with(formatted_tables)
|
|
107
108
|
@summary.should_receive(:header).with('Assets')
|
|
108
109
|
@summary.should_receive(:data).with(formatted_assets)
|
|
109
|
-
Summary.stub
|
|
110
|
+
Summary.stub(:new).and_return(@summary)
|
|
110
111
|
|
|
111
112
|
DumpReader.summary('/abc/123.tmp').should == @summary
|
|
112
113
|
end
|
|
@@ -117,25 +118,25 @@ describe DumpReader do
|
|
|
117
118
|
formatted_tables = ['a: 10 rows', 'b: 20 rows', 'c: 666 rows']
|
|
118
119
|
assets = formatted_assets = %w[path/a path/b]
|
|
119
120
|
|
|
120
|
-
schema =
|
|
121
|
-
schema_lines =
|
|
121
|
+
schema = double('schema')
|
|
122
|
+
schema_lines = double('schema_lines')
|
|
122
123
|
schema.should_receive(:split).with("\n").and_return(schema_lines)
|
|
123
124
|
|
|
124
|
-
@dump =
|
|
125
|
-
@dump.stub
|
|
126
|
-
@dump.stub
|
|
127
|
-
@dump.stub
|
|
128
|
-
DumpReader.stub
|
|
125
|
+
@dump = double('dump')
|
|
126
|
+
@dump.stub(:config).and_return(:tables => tables, :assets => assets)
|
|
127
|
+
@dump.stub(:open).and_yield(@dump)
|
|
128
|
+
@dump.stub(:schema).and_return(schema)
|
|
129
|
+
DumpReader.stub(:new).and_return(@dump)
|
|
129
130
|
@dump.should_receive(:read_config)
|
|
130
131
|
|
|
131
|
-
@summary =
|
|
132
|
+
@summary = double('summary')
|
|
132
133
|
@summary.should_receive(:header).with('Tables')
|
|
133
134
|
@summary.should_receive(:data).with(formatted_tables)
|
|
134
135
|
@summary.should_receive(:header).with('Assets')
|
|
135
136
|
@summary.should_receive(:data).with(formatted_assets)
|
|
136
137
|
@summary.should_receive(:header).with('Schema')
|
|
137
138
|
@summary.should_receive(:data).with(schema_lines)
|
|
138
|
-
Summary.stub
|
|
139
|
+
Summary.stub(:new).and_return(@summary)
|
|
139
140
|
|
|
140
141
|
DumpReader.summary('/abc/123.tmp', :schema => true).should == @summary
|
|
141
142
|
end
|
|
@@ -143,8 +144,8 @@ describe DumpReader do
|
|
|
143
144
|
|
|
144
145
|
describe "open" do
|
|
145
146
|
it "should set stream to gzipped tar reader" do
|
|
146
|
-
@gzip =
|
|
147
|
-
@stream =
|
|
147
|
+
@gzip = double('gzip')
|
|
148
|
+
@stream = double('stream')
|
|
148
149
|
Zlib::GzipReader.should_receive(:open).with(Pathname("123.tgz")).and_yield(@gzip)
|
|
149
150
|
Archive::Tar::Minitar::Input.should_receive(:open).with(@gzip).and_yield(@stream)
|
|
150
151
|
|
|
@@ -158,12 +159,12 @@ describe DumpReader do
|
|
|
158
159
|
|
|
159
160
|
describe "low level" do
|
|
160
161
|
before do
|
|
161
|
-
@e1 =
|
|
162
|
-
@e2 =
|
|
163
|
-
@e3 =
|
|
162
|
+
@e1 = double('e1', :full_name => 'config', :read => 'config_data')
|
|
163
|
+
@e2 = double('e2', :full_name => 'first.dump', :read => 'first.dump_data')
|
|
164
|
+
@e3 = double('e3', :full_name => 'second.dump', :read => 'second.dump_data')
|
|
164
165
|
@stream = [@e1, @e2, @e3]
|
|
165
166
|
@dump = DumpReader.new('123.tgz')
|
|
166
|
-
@dump.stub
|
|
167
|
+
@dump.stub(:stream).and_return(@stream)
|
|
167
168
|
end
|
|
168
169
|
|
|
169
170
|
describe "find_entry" do
|
|
@@ -204,9 +205,9 @@ describe DumpReader do
|
|
|
204
205
|
end
|
|
205
206
|
|
|
206
207
|
it "should open temp file, write data there, rewind and yield that file" do
|
|
207
|
-
@entry =
|
|
208
|
-
@dump.stub
|
|
209
|
-
@temp =
|
|
208
|
+
@entry = double('entry')
|
|
209
|
+
@dump.stub(:find_entry).and_yield(@entry)
|
|
210
|
+
@temp = double('temp')
|
|
210
211
|
Tempfile.should_receive(:open).and_yield(@temp)
|
|
211
212
|
|
|
212
213
|
@entry.should_receive(:eof?).and_return(false, false, true)
|
|
@@ -224,10 +225,10 @@ describe DumpReader do
|
|
|
224
225
|
|
|
225
226
|
describe "subroutines" do
|
|
226
227
|
before do
|
|
227
|
-
@stream =
|
|
228
|
+
@stream = double('stream')
|
|
228
229
|
@dump = DumpReader.new('123.tgz')
|
|
229
|
-
@dump.stub
|
|
230
|
-
Progress.stub
|
|
230
|
+
@dump.stub(:stream).and_return(@stream)
|
|
231
|
+
Progress.stub(:io).and_return(StringIO.new)
|
|
231
232
|
end
|
|
232
233
|
|
|
233
234
|
describe "read_config" do
|
|
@@ -257,8 +258,8 @@ describe DumpReader do
|
|
|
257
258
|
end
|
|
258
259
|
|
|
259
260
|
it "should invoke db:drop and db:create if migrate_down is reset" do
|
|
260
|
-
@load_task =
|
|
261
|
-
@dump_task =
|
|
261
|
+
@load_task = double('drop_task')
|
|
262
|
+
@dump_task = double('create_task')
|
|
262
263
|
Rake::Task.should_receive(:[]).with('db:drop').and_return(@load_task)
|
|
263
264
|
Rake::Task.should_receive(:[]).with('db:create').and_return(@dump_task)
|
|
264
265
|
@load_task.should_receive(:invoke)
|
|
@@ -272,7 +273,7 @@ describe DumpReader do
|
|
|
272
273
|
[nil, '1'].each do |migrate_down_value|
|
|
273
274
|
describe "when migrate_down is #{migrate_down_value.inspect}" do
|
|
274
275
|
it "should not find_entry if table schema_migrations is not present" do
|
|
275
|
-
@dump.stub
|
|
276
|
+
@dump.stub(:avaliable_tables).and_return(%w[first])
|
|
276
277
|
@dump.should_not_receive(:find_entry)
|
|
277
278
|
|
|
278
279
|
DumpRake::Env.with_env(:migrate_down => migrate_down_value) do
|
|
@@ -281,7 +282,7 @@ describe DumpReader do
|
|
|
281
282
|
end
|
|
282
283
|
|
|
283
284
|
it "should find schema_migrations.dump if table schema_migrations is present" do
|
|
284
|
-
@dump.stub
|
|
285
|
+
@dump.stub(:avaliable_tables).and_return(%w[schema_migrations first])
|
|
285
286
|
@dump.should_receive(:find_entry).with('schema_migrations.dump')
|
|
286
287
|
|
|
287
288
|
DumpRake::Env.with_env(:migrate_down => migrate_down_value) do
|
|
@@ -297,12 +298,12 @@ describe DumpReader do
|
|
|
297
298
|
end
|
|
298
299
|
@entry.rewind
|
|
299
300
|
|
|
300
|
-
@dump.stub
|
|
301
|
+
@dump.stub(:avaliable_tables).and_return(%w[schema_migrations first])
|
|
301
302
|
@dump.should_receive(:find_entry).with('schema_migrations.dump').and_yield(@entry)
|
|
302
303
|
@dump.should_receive('table_rows').with('schema_migrations').and_return(%w[1 2 4 5 6 7].map{ |version| {'version' => version} })
|
|
303
304
|
|
|
304
305
|
@versions = []
|
|
305
|
-
@migrate_down_task =
|
|
306
|
+
@migrate_down_task = double('migrate_down_task')
|
|
306
307
|
@migrate_down_task.should_receive('invoke').exactly(2).times.with do
|
|
307
308
|
version = DumpRake::Env['VERSION']
|
|
308
309
|
@versions << version
|
|
@@ -327,9 +328,9 @@ describe DumpReader do
|
|
|
327
328
|
|
|
328
329
|
describe "read_schema" do
|
|
329
330
|
before do
|
|
330
|
-
@task =
|
|
331
|
-
Rake::Task.stub
|
|
332
|
-
@task.stub
|
|
331
|
+
@task = double('task')
|
|
332
|
+
Rake::Task.stub(:[]).and_return(@task)
|
|
333
|
+
@task.stub(:invoke)
|
|
333
334
|
end
|
|
334
335
|
|
|
335
336
|
it "should read schema.rb to temp file" do
|
|
@@ -338,19 +339,19 @@ describe DumpReader do
|
|
|
338
339
|
end
|
|
339
340
|
|
|
340
341
|
it "should set ENV SCHEMA to temp files path" do
|
|
341
|
-
@file =
|
|
342
|
-
@dump.stub
|
|
342
|
+
@file = double('tempfile', :path => '/temp/123-arst')
|
|
343
|
+
@dump.stub(:read_entry_to_file).and_yield(@file)
|
|
343
344
|
|
|
344
345
|
DumpRake::Env.should_receive(:with_env).with('SCHEMA' => '/temp/123-arst')
|
|
345
346
|
@dump.read_schema
|
|
346
347
|
end
|
|
347
348
|
|
|
348
349
|
it "should call task db:schema:load and db:schema:dump" do
|
|
349
|
-
@file =
|
|
350
|
-
@dump.stub
|
|
350
|
+
@file = double('tempfile', :path => '/temp/123-arst')
|
|
351
|
+
@dump.stub(:read_entry_to_file).and_yield(@file)
|
|
351
352
|
|
|
352
|
-
@load_task =
|
|
353
|
-
@dump_task =
|
|
353
|
+
@load_task = double('load_task')
|
|
354
|
+
@dump_task = double('dump_task')
|
|
354
355
|
Rake::Task.should_receive(:[]).with('db:schema:load').and_return(@load_task)
|
|
355
356
|
Rake::Task.should_receive(:[]).with('db:schema:dump').and_return(@dump_task)
|
|
356
357
|
@load_task.should_receive(:invoke)
|
|
@@ -370,14 +371,14 @@ describe DumpReader do
|
|
|
370
371
|
|
|
371
372
|
describe "read_tables" do
|
|
372
373
|
it "should verify connection" do
|
|
373
|
-
@dump.stub
|
|
374
|
+
@dump.stub(:config).and_return({:tables => []})
|
|
374
375
|
@dump.should_receive(:verify_connection)
|
|
375
376
|
@dump.read_tables
|
|
376
377
|
end
|
|
377
378
|
|
|
378
379
|
it "should call read_table for each table in config" do
|
|
379
|
-
@dump.stub
|
|
380
|
-
@dump.stub
|
|
380
|
+
@dump.stub(:verify_connection)
|
|
381
|
+
@dump.stub(:config).and_return({:tables => {'first' => 1, 'second' => 3}})
|
|
381
382
|
|
|
382
383
|
@dump.should_receive(:read_table).with('first', 1)
|
|
383
384
|
@dump.should_receive(:read_table).with('second', 3)
|
|
@@ -394,7 +395,7 @@ describe DumpReader do
|
|
|
394
395
|
end
|
|
395
396
|
|
|
396
397
|
it "should clear table and read table if entry found for table" do
|
|
397
|
-
@entry =
|
|
398
|
+
@entry = double('entry', :to_str => Marshal.dump('data'), :eof? => true)
|
|
398
399
|
@dump.should_receive(:columns_insert_sql).with('data')
|
|
399
400
|
@dump.should_receive(:find_entry).with('first.dump').and_yield(@entry)
|
|
400
401
|
@dump.should_receive(:quote_table_name).with('first').and_return('`first`')
|
|
@@ -403,7 +404,7 @@ describe DumpReader do
|
|
|
403
404
|
end
|
|
404
405
|
|
|
405
406
|
it "should clear schema table before writing" do
|
|
406
|
-
@entry =
|
|
407
|
+
@entry = double('entry', :to_str => Marshal.dump('data'), :eof? => true)
|
|
407
408
|
@dump.should_receive(:columns_insert_sql).with('data')
|
|
408
409
|
@dump.should_receive(:find_entry).with('schema_migrations.dump').and_yield(@entry)
|
|
409
410
|
@dump.should_receive(:quote_table_name).with('schema_migrations').and_return('`schema_migrations`')
|
|
@@ -425,19 +426,19 @@ describe DumpReader do
|
|
|
425
426
|
end
|
|
426
427
|
@entry.rewind
|
|
427
428
|
|
|
428
|
-
@dump.stub
|
|
429
|
+
@dump.stub(:find_entry).and_yield(@entry)
|
|
429
430
|
end
|
|
430
431
|
it "should read to eof" do
|
|
431
432
|
create_entry(2500)
|
|
432
|
-
@dump.stub
|
|
433
|
-
@dump.stub
|
|
433
|
+
@dump.stub(:clear_table)
|
|
434
|
+
@dump.stub(:insert_into_table)
|
|
434
435
|
@dump.read_table('first', 2500)
|
|
435
436
|
@entry.eof?.should be_true
|
|
436
437
|
end
|
|
437
438
|
|
|
438
439
|
it "should try to insert rows in slices of 1000 rows" do
|
|
439
440
|
create_entry(2500)
|
|
440
|
-
@dump.stub
|
|
441
|
+
@dump.stub(:clear_table)
|
|
441
442
|
@dump.should_receive(:insert_into_table).with(anything, anything, object_of_length(1000)).twice
|
|
442
443
|
@dump.should_receive(:insert_into_table).with(anything, anything, object_of_length(500)).once
|
|
443
444
|
|
|
@@ -446,7 +447,7 @@ describe DumpReader do
|
|
|
446
447
|
|
|
447
448
|
it "should try to insert row by row if slice method fails" do
|
|
448
449
|
create_entry(2500)
|
|
449
|
-
@dump.stub
|
|
450
|
+
@dump.stub(:clear_table)
|
|
450
451
|
@dump.should_receive(:insert_into_table).with(anything, anything, kind_of(Array)).exactly(3).times.and_raise('sql error')
|
|
451
452
|
@dump.should_receive(:insert_into_table).with(anything, anything, kind_of(String)).exactly(2500).times
|
|
452
453
|
@dump.read_table('first', 2500)
|
|
@@ -454,7 +455,7 @@ describe DumpReader do
|
|
|
454
455
|
|
|
455
456
|
it "should quote table, columns and values and send them to insert_into_table" do
|
|
456
457
|
create_entry(100)
|
|
457
|
-
@dump.stub
|
|
458
|
+
@dump.stub(:clear_table)
|
|
458
459
|
@dump.should_receive(:quote_table_name).with('first').and_return('`first`')
|
|
459
460
|
@dump.should_receive(:columns_insert_sql).with(@columns).and_return('(`id`, `name`)')
|
|
460
461
|
@rows.each do |row|
|
|
@@ -469,33 +470,33 @@ describe DumpReader do
|
|
|
469
470
|
|
|
470
471
|
describe "read_assets" do
|
|
471
472
|
before do
|
|
472
|
-
@task =
|
|
473
|
-
Rake::Task.stub
|
|
474
|
-
@task.stub
|
|
475
|
-
@dump.stub
|
|
473
|
+
@task = double('task')
|
|
474
|
+
Rake::Task.stub(:[]).with('assets:delete').and_return(@task)
|
|
475
|
+
@task.stub(:invoke)
|
|
476
|
+
@dump.stub(:assets_root_link).and_yield('/tmp', 'assets')
|
|
476
477
|
end
|
|
477
478
|
|
|
478
479
|
it "should not read assets if config[:assets] is nil" do
|
|
479
|
-
@dump.stub
|
|
480
|
+
@dump.stub(:config).and_return({})
|
|
480
481
|
@dump.should_not_receive(:find_entry)
|
|
481
482
|
@dump.read_assets
|
|
482
483
|
end
|
|
483
484
|
|
|
484
485
|
it "should not read assets if config[:assets] is blank" do
|
|
485
|
-
@dump.stub
|
|
486
|
+
@dump.stub(:config).and_return({:assets => []})
|
|
486
487
|
@dump.should_not_receive(:find_entry)
|
|
487
488
|
@dump.read_assets
|
|
488
489
|
end
|
|
489
490
|
|
|
490
491
|
describe "deleting existing assets" do
|
|
491
492
|
before do
|
|
492
|
-
@stream.stub
|
|
493
|
+
@stream.stub(:each)
|
|
493
494
|
end
|
|
494
495
|
|
|
495
496
|
it "should call assets:delete" do
|
|
496
497
|
@assets = %w[images videos]
|
|
497
|
-
@dump.stub
|
|
498
|
-
@dump.stub
|
|
498
|
+
@dump.stub(:config).and_return({:assets => @assets})
|
|
499
|
+
@dump.stub(:find_entry)
|
|
499
500
|
|
|
500
501
|
@task.should_receive(:invoke)
|
|
501
502
|
|
|
@@ -504,8 +505,8 @@ describe DumpReader do
|
|
|
504
505
|
|
|
505
506
|
it "should call assets:delete with ASSETS set to config[:assets] joined with :" do
|
|
506
507
|
@assets = %w[images videos]
|
|
507
|
-
@dump.stub
|
|
508
|
-
@dump.stub
|
|
508
|
+
@dump.stub(:config).and_return({:assets => @assets})
|
|
509
|
+
@dump.stub(:find_entry)
|
|
509
510
|
|
|
510
511
|
def @task.invoke
|
|
511
512
|
DumpRake::Env[:assets].should == 'images:videos'
|
|
@@ -517,7 +518,7 @@ describe DumpReader do
|
|
|
517
518
|
describe "when called with restore_assets" do
|
|
518
519
|
it "should delete files and dirs only in requested paths" do
|
|
519
520
|
@assets = %w[images videos]
|
|
520
|
-
@dump.stub
|
|
521
|
+
@dump.stub(:config).and_return({:assets => @assets})
|
|
521
522
|
|
|
522
523
|
DumpRake::Assets.should_receive('glob_asset_children').with('images', '**/*').and_return(%w[images images/a.jpg images/b.jpg])
|
|
523
524
|
DumpRake::Assets.should_receive('glob_asset_children').with('videos', '**/*').and_return(%w[videos videos/a.mov])
|
|
@@ -545,10 +546,10 @@ describe DumpReader do
|
|
|
545
546
|
describe "old style" do
|
|
546
547
|
it "should find assets.tar" do
|
|
547
548
|
@assets = %w[images videos]
|
|
548
|
-
@dump.stub
|
|
549
|
-
Dir.stub
|
|
550
|
-
FileUtils.stub
|
|
551
|
-
@stream.stub
|
|
549
|
+
@dump.stub(:config).and_return({:assets => @assets})
|
|
550
|
+
Dir.stub(:glob).and_return([])
|
|
551
|
+
FileUtils.stub(:remove_entry)
|
|
552
|
+
@stream.stub(:each)
|
|
552
553
|
|
|
553
554
|
@dump.should_receive(:find_entry).with('assets.tar')
|
|
554
555
|
@dump.read_assets
|
|
@@ -560,18 +561,18 @@ describe DumpReader do
|
|
|
560
561
|
{'images' => {:files => 0, :total => 0}, 'videos' => {:files => 0, :total => 0}},
|
|
561
562
|
].each do |assets|
|
|
562
563
|
it "should rewrite rewind method to empty method - to not raise exception, open tar and extract each entry" do
|
|
563
|
-
@dump.stub
|
|
564
|
-
Dir.stub
|
|
565
|
-
FileUtils.stub
|
|
564
|
+
@dump.stub(:config).and_return({:assets => assets})
|
|
565
|
+
Dir.stub(:glob).and_return([])
|
|
566
|
+
FileUtils.stub(:remove_entry)
|
|
566
567
|
|
|
567
|
-
@assets_tar =
|
|
568
|
-
@assets_tar.stub
|
|
569
|
-
@dump.stub
|
|
568
|
+
@assets_tar = double('assets_tar')
|
|
569
|
+
@assets_tar.stub(:rewind).and_raise('hehe - we want to rewind to center of gzip')
|
|
570
|
+
@dump.stub(:find_entry).and_yield(@assets_tar)
|
|
570
571
|
|
|
571
|
-
@inp =
|
|
572
|
+
@inp = double('inp')
|
|
572
573
|
each_excpectation = @inp.should_receive(:each)
|
|
573
574
|
@entries = %w[a b c d].map do |s|
|
|
574
|
-
file =
|
|
575
|
+
file = double("file_#{s}")
|
|
575
576
|
each_excpectation.and_yield(file)
|
|
576
577
|
@inp.should_receive(:extract_entry).with(DumpRake::RailsRoot, file)
|
|
577
578
|
file
|
|
@@ -594,19 +595,19 @@ describe DumpReader do
|
|
|
594
595
|
{'images' => {:files => 0, :total => 0}, 'videos' => {:files => 0, :total => 0}},
|
|
595
596
|
].each do |assets|
|
|
596
597
|
it "should extract each entry" do
|
|
597
|
-
@dump.stub
|
|
598
|
-
Dir.stub
|
|
599
|
-
FileUtils.stub
|
|
598
|
+
@dump.stub(:config).and_return({:assets => assets})
|
|
599
|
+
Dir.stub(:glob).and_return([])
|
|
600
|
+
FileUtils.stub(:remove_entry)
|
|
600
601
|
|
|
601
602
|
@dump.should_receive(:assets_root_link).and_yield('/tmp/abc', 'assets')
|
|
602
603
|
each_excpectation = @stream.should_receive(:each)
|
|
603
604
|
@entries = %w[a b c d].map do |s|
|
|
604
|
-
file =
|
|
605
|
+
file = double("file_#{s}", :full_name => "assets/#{s}")
|
|
605
606
|
each_excpectation.and_yield(file)
|
|
606
607
|
@stream.should_receive(:extract_entry).with('/tmp/abc', file)
|
|
607
608
|
file
|
|
608
609
|
end
|
|
609
|
-
other_file =
|
|
610
|
+
other_file = double('other_file', :full_name => 'other_file')
|
|
610
611
|
each_excpectation.and_yield(other_file)
|
|
611
612
|
@stream.should_not_receive(:extract_entry).with('/tmp/abc', other_file)
|
|
612
613
|
|
|
@@ -618,8 +619,8 @@ describe DumpReader do
|
|
|
618
619
|
|
|
619
620
|
describe "read_asset?" do
|
|
620
621
|
it "should create filter and call custom_pass? on it" do
|
|
621
|
-
@filter =
|
|
622
|
-
@filter.stub
|
|
622
|
+
@filter = double('filter')
|
|
623
|
+
@filter.stub('custom_pass?')
|
|
623
624
|
|
|
624
625
|
DumpRake::Env.should_receive('filter').with(:restore_assets, DumpRake::Assets::SPLITTER).and_return(@filter)
|
|
625
626
|
|