standalone_migrations_new 7.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 +7 -0
- data/.rspec +2 -0
- data/.travis.yml +29 -0
- data/Gemfile +11 -0
- data/LICENSE +20 -0
- data/README.markdown +273 -0
- data/Rakefile +52 -0
- data/VERSION +1 -0
- data/example/.gitignore +5 -0
- data/example/Rakefile +9 -0
- data/example/db/config.yml +15 -0
- data/example/db/migrate/20120930053225_create_table_awesome_migration.rb +7 -0
- data/lib/standalone_migrations_new/callbacks.rb +13 -0
- data/lib/standalone_migrations_new/configurator.rb +103 -0
- data/lib/standalone_migrations_new/generator.rb +22 -0
- data/lib/standalone_migrations_new/minimal_railtie_config.rb +10 -0
- data/lib/standalone_migrations_new/tasks/connection.rake +8 -0
- data/lib/standalone_migrations_new/tasks/db/new_migration.rake +19 -0
- data/lib/standalone_migrations_new/tasks/environment.rake +3 -0
- data/lib/standalone_migrations_new/tasks.rb +34 -0
- data/lib/standalone_migrations_new.rb +20 -0
- data/lib/tasks/standalone_migrations_new.rb +10 -0
- data/spec/spec_helper.rb +4 -0
- data/spec/standalone_migrations_new/callbacks_spec.rb +48 -0
- data/spec/standalone_migrations_new/configurator_spec.rb +261 -0
- data/spec/standalone_migrations_new_spec.rb +371 -0
- data/standalone_migrations-7.1.1.gem +0 -0
- data/standalone_migrations_new-7.1.1.gem +0 -0
- data/standalone_migrations_new.gemspec +73 -0
- data/vendor/migration_helpers/MIT-LICENSE +20 -0
- data/vendor/migration_helpers/README.markdown +92 -0
- data/vendor/migration_helpers/init.rb +4 -0
- data/vendor/migration_helpers/lib/migration_helper.rb +51 -0
- metadata +136 -0
@@ -0,0 +1,20 @@
|
|
1
|
+
lib_path = File.expand_path("../", __FILE__)
|
2
|
+
$:.unshift lib_path unless $:.include?(lib_path)
|
3
|
+
|
4
|
+
require "rubygems"
|
5
|
+
require "rails"
|
6
|
+
require "active_record"
|
7
|
+
|
8
|
+
require "standalone_migrations_new/configurator"
|
9
|
+
require "standalone_migrations_new/generator"
|
10
|
+
require "standalone_migrations_new/callbacks"
|
11
|
+
|
12
|
+
railtie_app_path = "#{lib_path}/standalone_migrations_new/minimal_railtie_config"
|
13
|
+
APP_PATH = File.expand_path(railtie_app_path, __FILE__)
|
14
|
+
|
15
|
+
require "standalone_migrations_new/minimal_railtie_config"
|
16
|
+
require "standalone_migrations_new/tasks"
|
17
|
+
|
18
|
+
if !ENV["RAILS_ENV"]
|
19
|
+
ENV["RAILS_ENV"] = ENV["DB"] || ENV["RACK_ENV"] || Rails.env || "development"
|
20
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
# I really think we should deprecate this file, seems to me that is
|
2
|
+
# more explicit if the user require "standalone_migrations_new" and then
|
3
|
+
# call the load_tasks methods in his Rakefile. But this only a
|
4
|
+
# suggestion, and we can get rid of this comment if others on the
|
5
|
+
# project don't agree with that
|
6
|
+
#
|
7
|
+
# Ricardo Valeriano
|
8
|
+
|
9
|
+
require File.expand_path("../../standalone_migrations_new", __FILE__)
|
10
|
+
StandaloneMigrationsNew::Tasks.load_tasks
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module StandaloneMigrationsNew
|
4
|
+
|
5
|
+
describe "Callbacks" do
|
6
|
+
|
7
|
+
describe ".on_loaded" do
|
8
|
+
|
9
|
+
it "responds to on_loaded" do
|
10
|
+
expect(StandaloneMigrationsNew).to respond_to :on_loaded
|
11
|
+
end
|
12
|
+
|
13
|
+
it "responds to run_on_load_callbacks" do
|
14
|
+
expect(StandaloneMigrationsNew).to respond_to :run_on_load_callbacks
|
15
|
+
end
|
16
|
+
|
17
|
+
it "can pass a block do on_loaded" do
|
18
|
+
callback_was_called = false
|
19
|
+
|
20
|
+
StandaloneMigrationsNew.on_loaded do
|
21
|
+
callback_was_called = true
|
22
|
+
end
|
23
|
+
|
24
|
+
# invoke the callbacks
|
25
|
+
StandaloneMigrationsNew.run_on_load_callbacks
|
26
|
+
|
27
|
+
expect(callback_was_called).to be true
|
28
|
+
end
|
29
|
+
|
30
|
+
it "can pass multiple blocks to on_loaded" do
|
31
|
+
callback_count = 0
|
32
|
+
|
33
|
+
for i in 1..4
|
34
|
+
StandaloneMigrationsNew.on_loaded do
|
35
|
+
callback_count += 1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
StandaloneMigrationsNew.run_on_load_callbacks
|
40
|
+
|
41
|
+
expect(callback_count).to eq(4)
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,261 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module StandaloneMigrationsNew
|
5
|
+
describe Configurator, "which allows define custom dirs and files to work with your migrations" do
|
6
|
+
|
7
|
+
describe "environment yaml configuration loading" do
|
8
|
+
|
9
|
+
|
10
|
+
let(:env_hash_other_db) do
|
11
|
+
{
|
12
|
+
"development" => { "adapter" => "mysql2", "database" => "database_name" },
|
13
|
+
"test" => { "adapter" => "mysql2", "database" => "database_name" },
|
14
|
+
"production" => {"adapter" => "mysql2", "database" => "database_name" }
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
before(:all) do
|
19
|
+
@env_hash = {
|
20
|
+
"development" => { "adapter" => "sqlite3", "database" => "db/development.sql" },
|
21
|
+
"test" => { "adapter" => "sqlite3", "database" => "db/test.sql" },
|
22
|
+
"production" => {"adapter" => "sqlite3", "database" => ":memory:" }
|
23
|
+
}
|
24
|
+
@original_dir = Dir.pwd
|
25
|
+
Dir.chdir( File.expand_path("../../", __FILE__) )
|
26
|
+
FileUtils.mkdir_p "tmp/db"
|
27
|
+
Dir.chdir "tmp"
|
28
|
+
File.open("db/config.yml", "w") do |f|
|
29
|
+
f.write @env_hash.to_yaml
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
it "load the specific environment config" do
|
34
|
+
config = Configurator.new.config_for(:development)
|
35
|
+
expect(config).to eq(@env_hash["development"])
|
36
|
+
end
|
37
|
+
|
38
|
+
it "load the yaml with environment configurations" do
|
39
|
+
config = Configurator.new.config_for(:development)
|
40
|
+
expect(config["database"]).to eq("db/development.sql")
|
41
|
+
end
|
42
|
+
|
43
|
+
it "allow access the original configuration hash (for all environments)" do
|
44
|
+
expect(Configurator.new.config_for_all).to eq(@env_hash)
|
45
|
+
end
|
46
|
+
|
47
|
+
context "customizing the environments configuration dynamically" do
|
48
|
+
|
49
|
+
let(:configurator) { Configurator.new }
|
50
|
+
|
51
|
+
before(:all) do
|
52
|
+
@new_config = { 'sbrobous' => 'test' }
|
53
|
+
Configurator.environments_config do |env|
|
54
|
+
env.on "production" do
|
55
|
+
@new_config
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
it "allow changes on the configuration hashes" do
|
61
|
+
expect(configurator.config_for("production")).to eq(@new_config)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "return current configuration if block yielding returns nil" do
|
65
|
+
Configurator.environments_config do |env|
|
66
|
+
env.on "production" do
|
67
|
+
nil
|
68
|
+
end
|
69
|
+
end
|
70
|
+
expect(configurator.config_for("production")).to eq(@new_config)
|
71
|
+
end
|
72
|
+
|
73
|
+
it "pass the current configuration as block argument" do
|
74
|
+
Configurator.environments_config do |env|
|
75
|
+
env.on "production" do |current_config|
|
76
|
+
expect(current_config).to eq(@new_config)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
after(:all) do
|
84
|
+
Dir.chdir @original_dir
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
context "default values when .standalone_configurations is missing" do
|
90
|
+
|
91
|
+
let(:configurator) do
|
92
|
+
Configurator.new
|
93
|
+
end
|
94
|
+
|
95
|
+
it "use config/database.yml" do
|
96
|
+
expect(configurator.config).to eq('db/config.yml')
|
97
|
+
end
|
98
|
+
|
99
|
+
it "use db/migrate dir" do
|
100
|
+
expect(configurator.migrate_dir).to eq('db/migrate')
|
101
|
+
end
|
102
|
+
|
103
|
+
it "use db/seeds.rb" do
|
104
|
+
expect(configurator.seeds).to eq("db/seeds.rb")
|
105
|
+
end
|
106
|
+
|
107
|
+
it "use db/schema.rb" do
|
108
|
+
expect(configurator.schema).to end_with("/db/schema.rb")
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
context "passing configurations as a parameter" do
|
114
|
+
let(:args) do
|
115
|
+
{
|
116
|
+
:config => "custom/config/database.yml",
|
117
|
+
:migrate_dir => "custom/db/migrate",
|
118
|
+
:seeds => "custom/db/seeds.rb",
|
119
|
+
:schema => "custom/db/schema.rb"
|
120
|
+
}
|
121
|
+
end
|
122
|
+
|
123
|
+
let(:configurator) do
|
124
|
+
Configurator.new args
|
125
|
+
end
|
126
|
+
|
127
|
+
it "use custom config" do
|
128
|
+
expect(configurator.config).to eq(args[:config])
|
129
|
+
end
|
130
|
+
|
131
|
+
it "use custom migrate dir" do
|
132
|
+
expect(configurator.migrate_dir).to eq(args[:migrate_dir])
|
133
|
+
end
|
134
|
+
|
135
|
+
it "use custom seeds" do
|
136
|
+
expect(configurator.seeds).to eq(args[:seeds])
|
137
|
+
end
|
138
|
+
|
139
|
+
it "use custom schema" do
|
140
|
+
expect(configurator.schema).to eq(args[:schema])
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
context "using a .standalone_migrations_new file with configurations" do
|
146
|
+
|
147
|
+
before(:all) do
|
148
|
+
@original_dir = Dir.pwd
|
149
|
+
Dir.chdir File.expand_path("../", __FILE__)
|
150
|
+
end
|
151
|
+
|
152
|
+
let(:yaml_hash) do
|
153
|
+
{
|
154
|
+
"db" => {
|
155
|
+
"seeds" => "file/db/seeds.rb",
|
156
|
+
"migrate" => "file/db/migrate",
|
157
|
+
"schema" => "file/db/schema.rb"
|
158
|
+
},
|
159
|
+
"config" => {
|
160
|
+
"database" => "file/config/database.yml"
|
161
|
+
}
|
162
|
+
}
|
163
|
+
end
|
164
|
+
|
165
|
+
let(:yaml_hash_other_db) do
|
166
|
+
{
|
167
|
+
"db" => {
|
168
|
+
"seeds" => "db2/seeds.rb",
|
169
|
+
"migrate" => "db2/migrate",
|
170
|
+
"schema" => "db2/schema.rb"
|
171
|
+
},
|
172
|
+
"config" => {
|
173
|
+
"database" => "config/config_other.yml"
|
174
|
+
}
|
175
|
+
}
|
176
|
+
end
|
177
|
+
|
178
|
+
let(:configurator) do
|
179
|
+
file = ".standalone_migrations_new"
|
180
|
+
File.open(file, "w") { |file| file.write(yaml_hash.to_yaml) }
|
181
|
+
Configurator.new
|
182
|
+
end
|
183
|
+
|
184
|
+
context "with database environment variable passed" do
|
185
|
+
|
186
|
+
before(:all) do
|
187
|
+
ENV['DATABASE'] = "other_db"
|
188
|
+
end
|
189
|
+
|
190
|
+
let(:other_configurator) do
|
191
|
+
file_other_db = ".other_db.standalone_migrations_new"
|
192
|
+
File.open(file_other_db, "w") { |file| file.write(yaml_hash_other_db.to_yaml) }
|
193
|
+
Configurator.new
|
194
|
+
end
|
195
|
+
|
196
|
+
it "look up named dot file" do
|
197
|
+
expect(other_configurator.config).to eq(yaml_hash_other_db['config']['database'])
|
198
|
+
end
|
199
|
+
|
200
|
+
it "load config from named dot file" do
|
201
|
+
expect(other_configurator.migrate_dir).to eq('db2/migrate')
|
202
|
+
end
|
203
|
+
|
204
|
+
after(:all) do
|
205
|
+
File.delete ".other_db.standalone_migrations_new"
|
206
|
+
ENV['DATABASE'] = nil
|
207
|
+
end
|
208
|
+
|
209
|
+
end
|
210
|
+
|
211
|
+
context "with some configurations missing" do
|
212
|
+
|
213
|
+
let(:yaml_hash) do
|
214
|
+
{
|
215
|
+
"config" => {
|
216
|
+
"database" => "file/config/database.yml"
|
217
|
+
},
|
218
|
+
"db" => {
|
219
|
+
"seeds" => "file/db/seeds.rb"
|
220
|
+
}
|
221
|
+
}
|
222
|
+
end
|
223
|
+
|
224
|
+
it "use default values for the missing configurations" do
|
225
|
+
expect(configurator.migrate_dir).to eq('db/migrate')
|
226
|
+
end
|
227
|
+
|
228
|
+
it "use custom config from file" do
|
229
|
+
expect(configurator.config).to eq(yaml_hash["config"]["database"])
|
230
|
+
end
|
231
|
+
|
232
|
+
it "use custom config value from partial configuration" do
|
233
|
+
expect(configurator.seeds).to eq(yaml_hash["db"]["seeds"])
|
234
|
+
end
|
235
|
+
|
236
|
+
end
|
237
|
+
|
238
|
+
it "use custom config from file" do
|
239
|
+
expect(configurator.config).to eq(yaml_hash["config"]["database"])
|
240
|
+
end
|
241
|
+
|
242
|
+
it "use custom migrate dir from file" do
|
243
|
+
expect(configurator.migrate_dir).to eq(yaml_hash["db"]["migrate"])
|
244
|
+
end
|
245
|
+
|
246
|
+
it "use custom seeds from file" do
|
247
|
+
expect(configurator.seeds).to eq(yaml_hash["db"]["seeds"])
|
248
|
+
end
|
249
|
+
|
250
|
+
it "use custom schema from file" do
|
251
|
+
expect(configurator.schema).to eq(yaml_hash["db"]["schema"])
|
252
|
+
end
|
253
|
+
|
254
|
+
after(:all) do
|
255
|
+
File.delete ".standalone_migrations_new"
|
256
|
+
Dir.chdir @original_dir
|
257
|
+
end
|
258
|
+
|
259
|
+
end
|
260
|
+
end
|
261
|
+
end
|