padrino-gen 0.16.0.pre4 → 0.16.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 +4 -4
- data/Rakefile +1 -1
- data/bin/padrino-gen +4 -4
- data/lib/padrino-gen/command.rb +2 -2
- data/lib/padrino-gen/generators/actions.rb +68 -64
- data/lib/padrino-gen/generators/app/app.rb.tt +6 -6
- data/lib/padrino-gen/generators/app.rb +19 -19
- data/lib/padrino-gen/generators/cli.rb +16 -19
- data/lib/padrino-gen/generators/component.rb +18 -19
- data/lib/padrino-gen/generators/components/actions.rb +42 -42
- data/lib/padrino-gen/generators/components/mocks/mocha.rb +7 -7
- data/lib/padrino-gen/generators/components/mocks/rr.rb +7 -7
- data/lib/padrino-gen/generators/components/orms/activerecord.rb +158 -156
- data/lib/padrino-gen/generators/components/orms/couchrest.rb +33 -33
- data/lib/padrino-gen/generators/components/orms/datamapper.rb +108 -103
- data/lib/padrino-gen/generators/components/orms/dynamoid.rb +40 -40
- data/lib/padrino-gen/generators/components/orms/minirecord.rb +114 -114
- data/lib/padrino-gen/generators/components/orms/mongoid.rb +65 -65
- data/lib/padrino-gen/generators/components/orms/mongomapper.rb +20 -20
- data/lib/padrino-gen/generators/components/orms/mongomatic.rb +63 -59
- data/lib/padrino-gen/generators/components/orms/ohm.rb +49 -47
- data/lib/padrino-gen/generators/components/orms/ripple.rb +45 -45
- data/lib/padrino-gen/generators/components/orms/sequel.rb +51 -46
- data/lib/padrino-gen/generators/components/renderers/erb.rb +1 -1
- data/lib/padrino-gen/generators/components/renderers/liquid.rb +1 -1
- data/lib/padrino-gen/generators/components/scripts/dojo.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/extcore.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/jquery.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/mootools.rb +6 -6
- data/lib/padrino-gen/generators/components/scripts/prototype.rb +8 -8
- data/lib/padrino-gen/generators/components/stylesheets/compass.rb +1 -1
- data/lib/padrino-gen/generators/components/stylesheets/less.rb +4 -4
- data/lib/padrino-gen/generators/components/tests/bacon.rb +66 -66
- data/lib/padrino-gen/generators/components/tests/cucumber.rb +61 -61
- data/lib/padrino-gen/generators/components/tests/minitest.rb +70 -70
- data/lib/padrino-gen/generators/components/tests/rspec.rb +74 -74
- data/lib/padrino-gen/generators/components/tests/shoulda.rb +72 -72
- data/lib/padrino-gen/generators/components/tests/testunit.rb +69 -69
- data/lib/padrino-gen/generators/controller.rb +16 -17
- data/lib/padrino-gen/generators/helper.rb +8 -9
- data/lib/padrino-gen/generators/mailer.rb +8 -9
- data/lib/padrino-gen/generators/migration.rb +6 -6
- data/lib/padrino-gen/generators/model.rb +20 -21
- data/lib/padrino-gen/generators/plugin.rb +9 -9
- data/lib/padrino-gen/generators/project/config/apps.rb.tt +4 -4
- data/lib/padrino-gen/generators/project/config/boot.rb +2 -2
- data/lib/padrino-gen/generators/project/config.ru +1 -1
- data/lib/padrino-gen/generators/project.rb +49 -51
- data/lib/padrino-gen/generators/runner.rb +25 -24
- data/lib/padrino-gen/generators/task.rb +7 -8
- data/lib/padrino-gen/generators/templates/Gemfile.tt +5 -5
- data/lib/padrino-gen/generators/templates/controller.rb.tt +3 -3
- data/lib/padrino-gen/generators/templates/mailer.rb.tt +15 -15
- data/lib/padrino-gen/generators/templates/project_bin.tt +1 -1
- data/lib/padrino-gen/generators/templates/task.rb.tt +1 -1
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +152 -160
- data/lib/padrino-gen/padrino-tasks/database.rb +2 -2
- data/lib/padrino-gen/padrino-tasks/datamapper.rb +31 -31
- data/lib/padrino-gen/padrino-tasks/minirecord.rb +3 -3
- data/lib/padrino-gen/padrino-tasks/mongoid.rb +39 -41
- data/lib/padrino-gen/padrino-tasks/mongomapper.rb +18 -14
- data/lib/padrino-gen/padrino-tasks/sequel.rb +28 -28
- data/lib/padrino-gen/padrino-tasks/sql-helpers.rb +45 -45
- data/lib/padrino-gen.rb +4 -4
- data/padrino-gen.gemspec +19 -19
- data/test/fixtures/admin_template.rb +5 -5
- data/test/fixtures/database_template.rb +19 -22
- data/test/fixtures/example_template.rb +8 -8
- data/test/fixtures/git_template.rb +2 -2
- data/test/fixtures/plugin_template.rb +3 -3
- data/test/fixtures/rake_template.rb +5 -5
- data/test/helper.rb +23 -21
- data/test/test_app_generator.rb +13 -13
- data/test/test_cli.rb +4 -5
- data/test/test_component_generator.rb +17 -17
- data/test/test_controller_generator.rb +62 -63
- data/test/test_generator.rb +6 -6
- data/test/test_helper_generator.rb +23 -24
- data/test/test_mailer_generator.rb +7 -7
- data/test/test_migration_generator.rb +31 -31
- data/test/test_model_generator.rb +80 -80
- data/test/test_plugin_generator.rb +35 -36
- data/test/test_project_generator.rb +171 -169
- data/test/test_sql_helpers.rb +49 -50
- data/test/test_task_generator.rb +13 -13
- metadata +10 -10
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
if PadrinoTasks.load?(:datamapper, defined?(DataMapper))
|
|
2
2
|
namespace :dm do
|
|
3
3
|
namespace :auto do
|
|
4
|
-
desc
|
|
5
|
-
task :
|
|
4
|
+
desc 'Perform auto migration (reset your db data)'
|
|
5
|
+
task migrate: :environment do
|
|
6
6
|
::DataMapper.repository.auto_migrate!
|
|
7
|
-
puts
|
|
7
|
+
puts '<= dm:auto:migrate executed'
|
|
8
8
|
end
|
|
9
9
|
|
|
10
|
-
desc
|
|
11
|
-
task :
|
|
10
|
+
desc 'Perform non destructive auto migration'
|
|
11
|
+
task upgrade: :environment do
|
|
12
12
|
::DataMapper.repository.auto_upgrade!
|
|
13
|
-
puts
|
|
13
|
+
puts '<= dm:auto:upgrade executed'
|
|
14
14
|
end
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
namespace :migrate do
|
|
18
|
-
task :
|
|
18
|
+
task load: :environment do
|
|
19
19
|
require 'dm-migrations/migration_runner'
|
|
20
|
-
FileList[
|
|
20
|
+
FileList['db/migrate/*.rb'].each do |migration|
|
|
21
21
|
load migration
|
|
22
22
|
end
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
-
desc
|
|
26
|
-
task :up, [:version] => :load do |
|
|
25
|
+
desc 'Migrate up using migrations'
|
|
26
|
+
task :up, [:version] => :load do |_t, args|
|
|
27
27
|
version = args[:version] || env_migration_version
|
|
28
28
|
migrate_up!(version)
|
|
29
29
|
puts "<= dm:migrate:up #{version} executed"
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
desc
|
|
33
|
-
task :down, [:version] => :load do |
|
|
32
|
+
desc 'Migrate down using migrations'
|
|
33
|
+
task :down, [:version] => :load do |_t, args|
|
|
34
34
|
version = args[:version] || env_migration_version
|
|
35
35
|
migrate_down!(version)
|
|
36
36
|
puts "<= dm:migrate:down #{version} executed"
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
|
-
desc
|
|
40
|
+
desc 'Migrate the database to the latest version'
|
|
41
41
|
task :migrate do
|
|
42
42
|
migrate_task = if Dir['db/migrate/*.rb'].empty?
|
|
43
43
|
'dm:auto:upgrade'
|
|
@@ -48,49 +48,49 @@ if PadrinoTasks.load?(:datamapper, defined?(DataMapper))
|
|
|
48
48
|
Rake::Task[migrate_task].invoke
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
-
desc
|
|
52
|
-
task :
|
|
51
|
+
desc 'Create the database'
|
|
52
|
+
task create: :environment do
|
|
53
53
|
config = Padrino::Utils.symbolize_keys(DataMapper.repository.adapter.options)
|
|
54
54
|
adapter = config[:adapter]
|
|
55
55
|
user, password, host = config[:user], config[:password], config[:host]
|
|
56
56
|
|
|
57
|
-
database
|
|
58
|
-
database.sub!(
|
|
57
|
+
database = config[:database] || config[:path]
|
|
58
|
+
database.sub!(%r{^/}, '') unless adapter.start_with?('sqlite')
|
|
59
59
|
|
|
60
60
|
charset = config[:charset] || ENV['CHARSET'] || 'utf8'
|
|
61
61
|
collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
|
|
62
62
|
|
|
63
63
|
puts "=> Creating database '#{database}'"
|
|
64
64
|
Padrino::Generators::SqlHelpers.create_db(adapter, user, password, host, database, charset, collation)
|
|
65
|
-
puts
|
|
65
|
+
puts '<= dm:create executed'
|
|
66
66
|
end
|
|
67
67
|
|
|
68
|
-
desc
|
|
69
|
-
task :
|
|
68
|
+
desc 'Drop the database (postgres and mysql only)'
|
|
69
|
+
task drop: :environment do
|
|
70
70
|
config = Padrino::Utils.symbolize_keys(DataMapper.repository.adapter.options)
|
|
71
71
|
adapter = config[:adapter]
|
|
72
72
|
user, password, host = config[:user], config[:password], config[:host]
|
|
73
73
|
|
|
74
|
-
database
|
|
75
|
-
database.sub!(
|
|
74
|
+
database = config[:database] || config[:path]
|
|
75
|
+
database.sub!(%r{^/}, '') unless adapter.start_with?('sqlite')
|
|
76
76
|
|
|
77
77
|
puts "=> Dropping database '#{database}'"
|
|
78
78
|
Padrino::Generators::SqlHelpers.drop_db(adapter, user, password, host, database)
|
|
79
|
-
puts
|
|
79
|
+
puts '<= dm:drop executed'
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
desc
|
|
83
|
-
task :
|
|
82
|
+
desc 'Drop the database, migrate from scratch and initialize with the seed data'
|
|
83
|
+
task reset: %i[drop setup]
|
|
84
84
|
|
|
85
|
-
desc
|
|
86
|
-
task :
|
|
85
|
+
desc 'Create the database migrate and initialize with the seed data'
|
|
86
|
+
task setup: %i[create migrate seed]
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
task 'db:migrate:down' => 'dm:migrate:down'
|
|
90
90
|
task 'db:migrate:up' => 'dm:migrate:up'
|
|
91
91
|
task 'db:migrate' => 'dm:migrate'
|
|
92
|
-
task 'db:create'
|
|
93
|
-
task 'db:drop'
|
|
94
|
-
task 'db:reset'
|
|
95
|
-
task 'db:setup'
|
|
92
|
+
task 'db:create' => 'dm:create'
|
|
93
|
+
task 'db:drop' => 'dm:drop'
|
|
94
|
+
task 'db:reset' => 'dm:reset'
|
|
95
|
+
task 'db:setup' => 'dm:setup'
|
|
96
96
|
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
if PadrinoTasks.load?(:minirecord, defined?(MiniRecord))
|
|
2
2
|
namespace :mr do
|
|
3
3
|
desc 'Auto migration of database'
|
|
4
|
-
task :
|
|
5
|
-
Dir[
|
|
4
|
+
task migrate: :environment do
|
|
5
|
+
Dir['models/*.rb'].each do |file_path|
|
|
6
6
|
basename = File.basename(file_path, File.extname(file_path))
|
|
7
7
|
clazz = basename.camelize.constantize
|
|
8
8
|
clazz.auto_upgrade! if clazz.ancestors.include?(ActiveRecord::Base)
|
|
9
9
|
end
|
|
10
|
-
puts
|
|
10
|
+
puts '<= mr:migrate executed'
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -2,7 +2,6 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
2
2
|
require 'mongoid'
|
|
3
3
|
|
|
4
4
|
namespace :mi do
|
|
5
|
-
|
|
6
5
|
if Mongoid::VERSION =~ /^[012]\./
|
|
7
6
|
# Mongoid 2 API
|
|
8
7
|
def mongoid_collections
|
|
@@ -17,11 +16,9 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
17
16
|
collection.db.collection(name)
|
|
18
17
|
end
|
|
19
18
|
|
|
20
|
-
def enum_mongoid_documents(collection)
|
|
21
|
-
collection.find({}, :
|
|
22
|
-
cursor.each
|
|
23
|
-
yield doc
|
|
24
|
-
end
|
|
19
|
+
def enum_mongoid_documents(collection, &block)
|
|
20
|
+
collection.find({}, timeout: false, sort: '_id') do |cursor|
|
|
21
|
+
cursor.each(&block)
|
|
25
22
|
end
|
|
26
23
|
end
|
|
27
24
|
|
|
@@ -42,40 +39,37 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
42
39
|
Mongoid.default_session[name]
|
|
43
40
|
end
|
|
44
41
|
|
|
45
|
-
def enum_mongoid_documents(collection)
|
|
46
|
-
collection.find.sort(:
|
|
47
|
-
yield doc
|
|
48
|
-
end
|
|
42
|
+
def enum_mongoid_documents(collection, &block)
|
|
43
|
+
collection.find.sort(_id: 1).each(&block)
|
|
49
44
|
end
|
|
50
45
|
|
|
51
46
|
def rename_mongoid_collection(collection, new_name)
|
|
52
47
|
db_name = collection.database.name
|
|
53
|
-
collection.database.session.with(:
|
|
48
|
+
collection.database.session.with(database: :admin) do |admin|
|
|
54
49
|
admin.command(
|
|
55
|
-
:
|
|
56
|
-
:
|
|
57
|
-
:
|
|
50
|
+
renameCollection: "#{db_name}.#{collection.name}",
|
|
51
|
+
to: "#{db_name}.#{new_name}",
|
|
52
|
+
dropTarget: true
|
|
53
|
+
)
|
|
58
54
|
end
|
|
59
55
|
end
|
|
60
56
|
end
|
|
61
57
|
|
|
62
58
|
desc 'Drops all the collections for the database for the current Padrino.env'
|
|
63
|
-
task :
|
|
64
|
-
mongoid_collections.
|
|
59
|
+
task drop: :environment do
|
|
60
|
+
mongoid_collections.reject { |c| c.name =~ /system/ }.each(&:drop)
|
|
65
61
|
end
|
|
66
62
|
|
|
67
63
|
# Helper to retrieve a list of models.
|
|
68
64
|
def get_mongoid_models
|
|
69
65
|
documents = []
|
|
70
66
|
Dir['{app,.}/models/**/*.rb'].sort.each do |file|
|
|
71
|
-
model_path = file[0..-4].split('/')[2
|
|
67
|
+
model_path = file[0..-4].split('/')[2..]
|
|
72
68
|
|
|
73
69
|
begin
|
|
74
70
|
klass = model_path.map(&:classify).join('::').constantize
|
|
75
|
-
if klass.ancestors.include?(Mongoid::Document) && !klass.embedded
|
|
76
|
-
|
|
77
|
-
end
|
|
78
|
-
rescue => e
|
|
71
|
+
documents << klass if klass.ancestors.include?(Mongoid::Document) && !klass.embedded
|
|
72
|
+
rescue StandardError
|
|
79
73
|
# Just for non-mongoid objects that don't have the embedded
|
|
80
74
|
# attribute at the class level.
|
|
81
75
|
end
|
|
@@ -85,7 +79,7 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
85
79
|
end
|
|
86
80
|
|
|
87
81
|
desc 'Create the indexes defined on your mongoid models'
|
|
88
|
-
task :
|
|
82
|
+
task create_indexes: :environment do
|
|
89
83
|
get_mongoid_models.each(&:create_indexes)
|
|
90
84
|
end
|
|
91
85
|
|
|
@@ -106,11 +100,11 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
106
100
|
end
|
|
107
101
|
|
|
108
102
|
def collection_names
|
|
109
|
-
@collection_names ||= get_mongoid_models.map{ |d| d.collection.name }.uniq
|
|
103
|
+
@collection_names ||= get_mongoid_models.map { |d| d.collection.name }.uniq
|
|
110
104
|
end
|
|
111
105
|
|
|
112
|
-
desc
|
|
113
|
-
task :
|
|
106
|
+
desc 'Convert string objectids in mongo database to ObjectID type'
|
|
107
|
+
task objectid_convert: :environment do
|
|
114
108
|
collection_names.each do |collection_name|
|
|
115
109
|
puts "Converting #{collection_name} to use ObjectIDs"
|
|
116
110
|
|
|
@@ -124,7 +118,7 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
124
118
|
# Convert collection documents.
|
|
125
119
|
enum_mongoid_documents(collection) do |doc|
|
|
126
120
|
new_doc = convert_ids(doc)
|
|
127
|
-
new_collection.insert(new_doc, :
|
|
121
|
+
new_collection.insert(new_doc, safe: true)
|
|
128
122
|
end
|
|
129
123
|
|
|
130
124
|
puts "Done! Converted collection is in #{new_collection.name}\n\n"
|
|
@@ -157,20 +151,20 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
157
151
|
end
|
|
158
152
|
end
|
|
159
153
|
|
|
160
|
-
puts
|
|
154
|
+
puts 'DONE! Run `padrino rake mi:cleanup_old_collections` to remove old collections'
|
|
161
155
|
end
|
|
162
156
|
|
|
163
|
-
desc
|
|
164
|
-
task :
|
|
157
|
+
desc 'Clean up old collections backed up by objectid_convert'
|
|
158
|
+
task cleanup_old_collections: :environment do
|
|
165
159
|
collection_names.each do |collection_name|
|
|
166
160
|
collection = mongoid_collection(collection_name)
|
|
167
161
|
mongoid_new_collection(collection, "#{collection.name}_old").drop
|
|
168
162
|
end
|
|
169
163
|
end
|
|
170
164
|
|
|
171
|
-
desc
|
|
172
|
-
task :
|
|
173
|
-
models = Dir["#{Padrino.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m,
|
|
165
|
+
desc 'Generates .yml files for I18n translations'
|
|
166
|
+
task translate: :environment do
|
|
167
|
+
models = Dir["#{Padrino.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m, '.rb') }
|
|
174
168
|
|
|
175
169
|
models.each do |m|
|
|
176
170
|
# Get the model class.
|
|
@@ -194,17 +188,21 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
|
194
188
|
columns.each do |c|
|
|
195
189
|
locale += "\n #{c}: #{c.humanize}" unless locale.include?("#{c}:")
|
|
196
190
|
end
|
|
197
|
-
print "Lang #{lang.to_s.upcase} already exist ... "; $stdout.flush
|
|
198
191
|
else
|
|
199
|
-
locale
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
192
|
+
locale = <<~YAML
|
|
193
|
+
#{lang}:
|
|
194
|
+
models:
|
|
195
|
+
#{m}:
|
|
196
|
+
name: #{klass.model_name.human}
|
|
197
|
+
attributes:
|
|
198
|
+
YAML
|
|
199
|
+
|
|
200
|
+
columns.each { |c| locale += " #{c}: #{c.humanize}\n" }
|
|
201
|
+
locale.chomp!
|
|
206
202
|
end
|
|
207
|
-
|
|
203
|
+
|
|
204
|
+
$stdout.flush
|
|
205
|
+
File.open(filename, 'w') { |f| f.puts locale }
|
|
208
206
|
end
|
|
209
207
|
puts
|
|
210
208
|
end
|
|
@@ -7,13 +7,13 @@ if defined?(MongoMapper)
|
|
|
7
7
|
|
|
8
8
|
namespace :mm do
|
|
9
9
|
desc 'Drops all the collections for the database for the current Padrino.env'
|
|
10
|
-
task :
|
|
11
|
-
MongoMapper.database.collections.
|
|
10
|
+
task drop: :environment do
|
|
11
|
+
MongoMapper.database.collections.reject { |c| c.name =~ /system/ }.each(&:drop)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
desc
|
|
15
|
-
task :
|
|
16
|
-
models = Dir["#{Padrino.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m,
|
|
14
|
+
desc 'Generates .yml files for I18n translations'
|
|
15
|
+
task translate: :environment do
|
|
16
|
+
models = Dir["#{Padrino.root}/{app,}/models/**/*.rb"].map { |m| File.basename(m, '.rb') }
|
|
17
17
|
|
|
18
18
|
models.each do |m|
|
|
19
19
|
# Get the model class.
|
|
@@ -34,17 +34,21 @@ if defined?(MongoMapper)
|
|
|
34
34
|
columns.each do |c|
|
|
35
35
|
locale += "\n #{c}: #{c.humanize}" unless locale.include?("#{c}:")
|
|
36
36
|
end
|
|
37
|
-
print "Lang #{lang.to_s.upcase} already exist ... "; $stdout.flush
|
|
38
37
|
else
|
|
39
|
-
locale
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
38
|
+
locale = <<~YAML
|
|
39
|
+
#{lang}:
|
|
40
|
+
models:
|
|
41
|
+
#{m}:
|
|
42
|
+
name: #{klass.model_name.human}
|
|
43
|
+
attributes:
|
|
44
|
+
YAML
|
|
45
|
+
|
|
46
|
+
columns.each { |c| locale += " #{c}: #{c.humanize}\n" }
|
|
47
|
+
locale.chomp!
|
|
46
48
|
end
|
|
47
|
-
|
|
49
|
+
|
|
50
|
+
$stdout.flush
|
|
51
|
+
File.open(filename, 'w') { |f| f.puts locale }
|
|
48
52
|
end
|
|
49
53
|
puts
|
|
50
54
|
end
|
|
@@ -1,47 +1,47 @@
|
|
|
1
1
|
if PadrinoTasks.load?(:sequel, defined?(Sequel))
|
|
2
2
|
namespace :sq do
|
|
3
3
|
namespace :migrate do
|
|
4
|
-
desc
|
|
5
|
-
task :
|
|
4
|
+
desc 'Perform automigration (reset your db data)'
|
|
5
|
+
task auto: :skeleton do
|
|
6
6
|
::Sequel.extension :migration
|
|
7
|
-
::Sequel::Migrator.run Sequel::Model.db,
|
|
8
|
-
::Sequel::Migrator.run Sequel::Model.db,
|
|
9
|
-
puts
|
|
7
|
+
::Sequel::Migrator.run Sequel::Model.db, 'db/migrate', target: 0
|
|
8
|
+
::Sequel::Migrator.run Sequel::Model.db, 'db/migrate'
|
|
9
|
+
puts '<= sq:migrate:auto executed'
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
desc
|
|
13
|
-
task :to, [:version] => :skeleton do |
|
|
12
|
+
desc 'Perform migration up/down to MIGRATION_VERSION'
|
|
13
|
+
task :to, [:version] => :skeleton do |_t, args|
|
|
14
14
|
version = (args[:version] || env_migration_version).to_s.strip
|
|
15
15
|
::Sequel.extension :migration
|
|
16
|
-
|
|
17
|
-
::Sequel::Migrator.apply(Sequel::Model.db,
|
|
16
|
+
raise 'No MIGRATION_VERSION was provided' if version.empty?
|
|
17
|
+
::Sequel::Migrator.apply(Sequel::Model.db, 'db/migrate', version.to_i)
|
|
18
18
|
puts "<= sq:migrate:to[#{version}] executed"
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
desc
|
|
22
|
-
task :
|
|
21
|
+
desc 'Perform migration up to latest migration available'
|
|
22
|
+
task up: :skeleton do
|
|
23
23
|
::Sequel.extension :migration
|
|
24
|
-
::Sequel::Migrator.run Sequel::Model.db,
|
|
25
|
-
puts
|
|
24
|
+
::Sequel::Migrator.run Sequel::Model.db, 'db/migrate'
|
|
25
|
+
puts '<= sq:migrate:up executed'
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
desc
|
|
29
|
-
task :
|
|
28
|
+
desc 'Perform migration down (erase all data)'
|
|
29
|
+
task down: :skeleton do
|
|
30
30
|
::Sequel.extension :migration
|
|
31
|
-
::Sequel::Migrator.run Sequel::Model.db,
|
|
32
|
-
puts
|
|
31
|
+
::Sequel::Migrator.run Sequel::Model.db, 'db/migrate', target: 0
|
|
32
|
+
puts '<= sq:migrate:down executed'
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
desc
|
|
37
|
-
task :
|
|
36
|
+
desc 'Perform migration up to latest migration available'
|
|
37
|
+
task migrate: 'sq:migrate:up'
|
|
38
38
|
|
|
39
|
-
desc
|
|
40
|
-
task :
|
|
39
|
+
desc 'Create the database'
|
|
40
|
+
task create: :skeleton do
|
|
41
41
|
config = Sequel::Model.db.opts
|
|
42
42
|
user, password, host = config[:user], config[:password], config[:host]
|
|
43
43
|
database = config[:database]
|
|
44
|
-
charset = config[:charset] || ENV['CHARSET']
|
|
44
|
+
charset = config[:charset] || ENV['CHARSET'] || 'utf8'
|
|
45
45
|
collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
|
|
46
46
|
|
|
47
47
|
puts "=> Creating database '#{database}'"
|
|
@@ -51,11 +51,11 @@ if PadrinoTasks.load?(:sequel, defined?(Sequel))
|
|
|
51
51
|
require 'padrino-gen/padrino-tasks/sql-helpers'
|
|
52
52
|
Padrino::Generators::SqlHelpers.create_db(config[:adapter], user, password, host, database, charset, collation)
|
|
53
53
|
end
|
|
54
|
-
puts
|
|
54
|
+
puts '<= sq:create executed'
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
desc
|
|
58
|
-
task :
|
|
57
|
+
desc 'Drop the database (postgres and mysql only)'
|
|
58
|
+
task drop: :skeleton do
|
|
59
59
|
config = ::Sequel::Model.db.opts
|
|
60
60
|
user, password, host, database = config[:user], config[:password], config[:host], config[:database]
|
|
61
61
|
|
|
@@ -67,13 +67,13 @@ if PadrinoTasks.load?(:sequel, defined?(Sequel))
|
|
|
67
67
|
else
|
|
68
68
|
Padrino::Generators::SqlHelpers.drop_db(config[:adapter], user, password, host, database)
|
|
69
69
|
end
|
|
70
|
-
puts
|
|
70
|
+
puts '<= sq:drop executed'
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
desc 'Drop the database, migrate from scratch and initialize with the seed data'
|
|
74
|
-
task :
|
|
74
|
+
task reset: %w[drop create migrate seed]
|
|
75
75
|
|
|
76
|
-
task :
|
|
76
|
+
task seed: :environment do
|
|
77
77
|
missing_model_features = Padrino.send(:default_dependency_paths) - Padrino.send(:dependency_paths)
|
|
78
78
|
Padrino.require_dependencies(missing_model_features)
|
|
79
79
|
Rake::Task['db:seed'].invoke
|
|
@@ -5,66 +5,66 @@ module Padrino
|
|
|
5
5
|
module SqlHelpers
|
|
6
6
|
def self.create_db(adapter, user, password, host, database, charset, collation)
|
|
7
7
|
case adapter
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
when 'postgres'
|
|
9
|
+
environment = {}
|
|
10
|
+
environment['PGPASSWORD'] = password unless password.nil? || password.empty?
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
arguments = []
|
|
13
|
+
arguments << "--encoding=#{charset}" if charset
|
|
14
|
+
arguments << "--host=#{host}" if host
|
|
15
|
+
arguments << "--username=#{user}" if user
|
|
16
|
+
arguments << database
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
18
|
+
Process.wait Process.spawn(environment, 'createdb', *arguments)
|
|
19
|
+
when 'mysql', 'mysql2'
|
|
20
|
+
environment = {}
|
|
21
|
+
environment['MYSQL_PWD'] = password unless password.nil? || password.empty?
|
|
22
22
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
arguments = []
|
|
24
|
+
arguments << "--user=#{user}" if user
|
|
25
|
+
arguments << "--host=#{host}" unless %w[127.0.0.1 localhost].include?(host)
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
arguments << '-e'
|
|
28
|
+
arguments << "CREATE DATABASE #{database} DEFAULT CHARACTER SET #{charset} DEFAULT COLLATE #{collation}"
|
|
29
29
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
Process.wait Process.spawn(environment, 'mysql', *arguments)
|
|
31
|
+
when 'sqlite', 'sqlite3'
|
|
32
|
+
raise "Database #{database} already exists" if File.file?(database)
|
|
33
|
+
FileUtils.mkdir_p(File.dirname(database))
|
|
34
|
+
File.open(database, 'a') {}
|
|
35
|
+
else
|
|
36
|
+
raise "Adapter #{adapter} not supported for creating databases yet."
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
def self.drop_db(adapter, user, password, host, database)
|
|
41
41
|
case adapter
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
42
|
+
when 'postgres'
|
|
43
|
+
environment = {}
|
|
44
|
+
environment['PGPASSWORD'] = password unless password.nil? || password.empty?
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
46
|
+
arguments = []
|
|
47
|
+
arguments << "--host=#{host}" if host
|
|
48
|
+
arguments << "--username=#{user}" if user
|
|
49
|
+
arguments << database
|
|
50
50
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
51
|
+
Process.wait Process.spawn(environment, 'dropdb', *arguments)
|
|
52
|
+
when 'mysql', 'mysql2'
|
|
53
|
+
environment = {}
|
|
54
|
+
environment['MYSQL_PWD'] = password unless password.nil? || password.empty?
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
56
|
+
arguments = []
|
|
57
|
+
arguments << "--user=#{user}" if user
|
|
58
|
+
arguments << "--host=#{host}" unless %w[127.0.0.1 localhost].include?(host)
|
|
59
59
|
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
arguments << '-e'
|
|
61
|
+
arguments << "DROP DATABASE IF EXISTS #{database}"
|
|
62
62
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
63
|
+
Process.wait Process.spawn(environment, 'mysql', *arguments)
|
|
64
|
+
when 'sqlite', 'sqlite3'
|
|
65
|
+
File.delete(database) if File.file?(database)
|
|
66
|
+
else
|
|
67
|
+
raise "Adapter #{adapter} not supported for dropping databases yet."
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
end
|
data/lib/padrino-gen.rb
CHANGED
|
@@ -20,7 +20,7 @@ module Padrino
|
|
|
20
20
|
#
|
|
21
21
|
module Generators
|
|
22
22
|
# Defines the absolute path to the padrino source folder.
|
|
23
|
-
DEV_PATH = File.expand_path(
|
|
23
|
+
DEV_PATH = File.expand_path('../../', __dir__)
|
|
24
24
|
|
|
25
25
|
class << self
|
|
26
26
|
##
|
|
@@ -61,14 +61,14 @@ module Padrino
|
|
|
61
61
|
require 'padrino-gen/generators/actions'
|
|
62
62
|
require 'padrino-gen/generators/components/actions'
|
|
63
63
|
require 'padrino-gen/generators/runner'
|
|
64
|
-
load_paths.flatten.each { |file| require file
|
|
64
|
+
load_paths.flatten.each { |file| require file }
|
|
65
65
|
end
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
|
|
70
70
|
# Add our generators to Padrino::Generators.
|
|
71
|
-
Padrino::Generators.load_paths << Dir[
|
|
71
|
+
Padrino::Generators.load_paths << Dir["#{__dir__}/padrino-gen/generators/{project,app,mailer,controller,helper,model,migration,plugin,component,task}.rb"]
|
|
72
72
|
|
|
73
73
|
# Add our tasks to padrino-core.
|
|
74
|
-
Padrino::Tasks.files << Dir[
|
|
74
|
+
Padrino::Tasks.files << Dir["#{__dir__}/padrino-gen/padrino-tasks/**/*.rb"]
|