padrino-gen 0.11.2 → 0.11.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.
- data/lib/padrino-gen/generators/actions.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/bacon.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/minitest.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/riot.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/rspec.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/shoulda.rb +1 -1
- data/lib/padrino-gen/generators/components/tests/testspec.rb +1 -1
- data/lib/padrino-gen/generators/project/.gitignore +2 -1
- data/lib/padrino-gen/generators/project.rb +2 -2
- data/lib/padrino-gen/generators/templates/gem/README.md.tt +3 -3
- data/lib/padrino-gen/generators/templates/gem/gemspec.tt +2 -2
- data/lib/padrino-gen/generators/templates/gem/lib/libname/version.tt +2 -2
- data/lib/padrino-gen/generators/templates/gem/lib/libname.tt +3 -3
- data/lib/padrino-gen/generators/templates/static/ujs/jquery.js +14 -0
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +7 -2
- data/lib/padrino-gen/padrino-tasks/datamapper.rb +15 -53
- data/lib/padrino-gen/padrino-tasks/mongoid.rb +1 -1
- data/lib/padrino-gen/padrino-tasks/sequel.rb +36 -0
- data/lib/padrino-gen/padrino-tasks/sql-helpers.rb +56 -0
- data/test/test_project_generator.rb +29 -0
- metadata +5 -7
@@ -45,7 +45,7 @@ module Padrino
|
|
45
45
|
path = File.expand_path(File.dirname(__FILE__) + "/components/#{component.to_s.pluralize}/#{choice}.rb")
|
46
46
|
say_status :apply, "#{component.to_s.pluralize}/#{choice}"
|
47
47
|
shell.padding += 1
|
48
|
-
instance_eval(
|
48
|
+
instance_eval(File.read(path))
|
49
49
|
shell.padding -= 1
|
50
50
|
end
|
51
51
|
|
@@ -120,7 +120,7 @@ module Padrino
|
|
120
120
|
#
|
121
121
|
# @api private
|
122
122
|
def git_author_name
|
123
|
-
git_author_name = `git config user.name`.chomp
|
123
|
+
git_author_name = `git config user.name`.chomp rescue ''
|
124
124
|
git_author_name.empty? ? "TODO: Write your name" : git_author_name
|
125
125
|
end
|
126
126
|
|
@@ -128,7 +128,7 @@ module Padrino
|
|
128
128
|
#
|
129
129
|
# @api private
|
130
130
|
def git_author_email
|
131
|
-
git_author_email = `git config user.email`.chomp
|
131
|
+
git_author_email = `git config user.email`.chomp rescue ''
|
132
132
|
git_author_email.empty? ? "TODO: Write your email address" : git_author_email
|
133
133
|
end
|
134
134
|
end # Project
|
@@ -1,4 +1,4 @@
|
|
1
|
-
# <%=
|
1
|
+
# <%= @project_name %>
|
2
2
|
|
3
3
|
A padrino gem
|
4
4
|
|
@@ -13,7 +13,7 @@ gem '<%=name%>'
|
|
13
13
|
and mount the app in your `apps.rb`:
|
14
14
|
|
15
15
|
```ruby
|
16
|
-
Padrino.mount("<%=
|
16
|
+
Padrino.mount("<%= @project_name %>::App").to("/<%=name%>")
|
17
17
|
```
|
18
18
|
|
19
19
|
## Development
|
@@ -26,4 +26,4 @@ $ bundle exec padrino start
|
|
26
26
|
```
|
27
27
|
|
28
28
|
The Rakefile also works like the normal Padrino one and supports all standard
|
29
|
-
components.
|
29
|
+
components.
|
@@ -11,9 +11,9 @@ Gem::Specification.new do |gem|
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
13
13
|
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
14
|
-
gem.name = <%=name.
|
14
|
+
gem.name = <%= name.downcase.inspect %>
|
15
15
|
gem.require_paths = ["lib", "app"]
|
16
|
-
gem.version = <%=
|
16
|
+
gem.version = <%= @project_name %>::VERSION
|
17
17
|
|
18
18
|
gem.add_dependency "padrino-core"
|
19
19
|
end
|
@@ -1,3 +1,3 @@
|
|
1
|
-
module <%=
|
1
|
+
module <%= @project_name %>
|
2
2
|
VERSION = '0.0.1'
|
3
|
-
end
|
3
|
+
end
|
@@ -84,12 +84,26 @@ $(function(){
|
|
84
84
|
var verb = element.data('method');
|
85
85
|
var url = element.attr('href');
|
86
86
|
var form = $('<form method="post" action="'+url+'"></form>');
|
87
|
+
var csrf_token = $('meta[name=csrf-token]').attr('content');
|
88
|
+
var csrf_param = $('meta[name=csrf-param]').attr('content');
|
87
89
|
form.hide().appendTo('body');
|
88
90
|
if (verb !== 'post') {
|
89
91
|
var field = '<input type="hidden" name="_method" value="' + verb + '" />';
|
90
92
|
form.append(field);
|
91
93
|
}
|
94
|
+
if (csrf_param !== undefined && csrf_token !== undefined) {
|
95
|
+
var field = '<input type="hidden" name="' + csrf_param + '" value="' + csrf_token + '" />';
|
96
|
+
form.append(field);
|
97
|
+
}
|
92
98
|
form.submit();
|
93
99
|
}
|
94
100
|
};
|
101
|
+
|
102
|
+
// Every xhr request is sent along with the CSRF token.
|
103
|
+
$.ajaxPrefilter(function(options, originalOptions, xhr) {
|
104
|
+
if (options.verb !== 'GET') {
|
105
|
+
var token = $('meta[name="csrf-token"]').attr('content');
|
106
|
+
if (token) xhr.setRequestHeader('X-CSRF-Token', token);
|
107
|
+
}
|
108
|
+
});
|
95
109
|
});
|
@@ -1,7 +1,12 @@
|
|
1
1
|
if PadrinoTasks.load?(:activerecord, defined?(ActiveRecord))
|
2
2
|
# Fixes for Yardoc YRI Building
|
3
|
-
|
4
|
-
|
3
|
+
begin
|
4
|
+
require 'active_record'
|
5
|
+
require 'active_record/schema'
|
6
|
+
rescue LoadError
|
7
|
+
module ActiveRecord; end unless defined?(ActiveRecord)
|
8
|
+
class ActiveRecord::Schema; end unless defined?(ActiveRecord::Schema)
|
9
|
+
end
|
5
10
|
|
6
11
|
namespace :ar do
|
7
12
|
namespace :create do
|
@@ -3,13 +3,13 @@ if PadrinoTasks.load?(:datamapper, defined?(DataMapper))
|
|
3
3
|
namespace :auto do
|
4
4
|
desc "Perform automigration (reset your db data)"
|
5
5
|
task :migrate => :environment do
|
6
|
-
::DataMapper.auto_migrate!
|
6
|
+
::DataMapper.repository.auto_migrate!
|
7
7
|
puts "<= dm:auto:migrate executed"
|
8
8
|
end
|
9
9
|
|
10
10
|
desc "Perform non destructive automigration"
|
11
11
|
task :upgrade => :environment do
|
12
|
-
::DataMapper.auto_upgrade!
|
12
|
+
::DataMapper.repository.auto_upgrade!
|
13
13
|
puts "<= dm:auto:upgrade executed"
|
14
14
|
end
|
15
15
|
end
|
@@ -55,34 +55,15 @@ if PadrinoTasks.load?(:datamapper, defined?(DataMapper))
|
|
55
55
|
database = config[:database] || config[:path].sub(/\//, "")
|
56
56
|
charset = config[:charset] || ENV['CHARSET'] || 'utf8'
|
57
57
|
collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
|
58
|
-
puts "=> Creating database '#{database}'"
|
59
|
-
case config[:adapter]
|
60
|
-
when 'postgres'
|
61
|
-
arguments = []
|
62
|
-
arguments << "--encoding=#{charset}" if charset
|
63
|
-
arguments << "--host=#{host}" if host
|
64
|
-
arguments << "--username=#{user}" if user
|
65
|
-
arguments << database
|
66
|
-
system("createdb", *arguments)
|
67
|
-
puts "<= dm:create executed"
|
68
|
-
when 'mysql'
|
69
|
-
arguments = ["--user=#{user}"]
|
70
|
-
arguments << "--password=#{password}" unless password.blank?
|
71
|
-
|
72
|
-
unless %w[127.0.0.1 localhost].include?(host)
|
73
|
-
arguments << "--host=#{host}"
|
74
|
-
end
|
75
|
-
|
76
|
-
arguments << '-e'
|
77
|
-
arguments << "CREATE DATABASE #{database} DEFAULT CHARACTER SET #{charset} DEFAULT COLLATE #{collation}"
|
78
58
|
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
59
|
+
puts "=> Creating database '#{database}'"
|
60
|
+
if config[:adapter] == 'sqlite3'
|
61
|
+
DataMapper.setup(DataMapper.repository.name, config)
|
62
|
+
else
|
63
|
+
# require 'padrino-gen/padrino-tasks/sql-helpers'
|
64
|
+
Padrino::Generators::SqlHelpers.create_db(config[:adapter], user, password, host, database, charset, collation)
|
85
65
|
end
|
66
|
+
puts "<= dm:create executed"
|
86
67
|
end
|
87
68
|
|
88
69
|
desc "Drop the database (postgres and mysql only)"
|
@@ -90,33 +71,14 @@ if PadrinoTasks.load?(:datamapper, defined?(DataMapper))
|
|
90
71
|
config = DataMapper.repository.adapter.options.symbolize_keys
|
91
72
|
user, password, host = config[:user], config[:password], config[:host]
|
92
73
|
database = config[:database] || config[:path].sub(/\//, "")
|
93
|
-
puts "=> Dropping database '#{database}'"
|
94
|
-
case config[:adapter]
|
95
|
-
when 'postgres'
|
96
|
-
arguments = []
|
97
|
-
arguments << "--host=#{host}" if host
|
98
|
-
arguments << "--username=#{user}" if user
|
99
|
-
arguments << database
|
100
|
-
system("dropdb", *arguments)
|
101
|
-
puts "<= dm:drop executed"
|
102
|
-
when 'mysql'
|
103
|
-
arguments = ["--user=#{user}"]
|
104
|
-
arguments << "--password=#{password}" unless password.blank?
|
105
74
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
arguments << "DROP DATABASE IF EXISTS #{database}"
|
112
|
-
|
113
|
-
system('mysql',*arguments)
|
114
|
-
puts "<= dm:drop executed"
|
115
|
-
when 'sqlite3'
|
116
|
-
File.delete(config[:path]) if File.exist?(config[:path])
|
117
|
-
else
|
118
|
-
raise "Adapter #{config[:adapter]} not supported for dropping databases yet."
|
75
|
+
puts "=> Dropping database '#{database}'"
|
76
|
+
if config[:adapter] == 'sqlite3'
|
77
|
+
File.delete(config[:path]) if File.exist?(config[:path])
|
78
|
+
else
|
79
|
+
Padrino::Generators::SqlHelpers.drop_db(config[:adapter], user, password, host, database)
|
119
80
|
end
|
81
|
+
puts "<= dm:drop executed"
|
120
82
|
end
|
121
83
|
|
122
84
|
desc "Drop the database, migrate from scratch and initialize with the seed data"
|
@@ -67,7 +67,7 @@ if PadrinoTasks.load?(:mongoid, defined?(Mongoid))
|
|
67
67
|
# Helper to retrieve a list of models.
|
68
68
|
def get_mongoid_models
|
69
69
|
documents = []
|
70
|
-
Dir['{app,.}/models
|
70
|
+
Dir['{app,.}/models/**/*.rb'].sort.each do |file|
|
71
71
|
model_path = file[0..-4].split('/')[2..-1]
|
72
72
|
|
73
73
|
begin
|
@@ -36,7 +36,43 @@ if PadrinoTasks.load?(:sequel, defined?(Sequel))
|
|
36
36
|
|
37
37
|
desc "Perform migration up to latest migration available"
|
38
38
|
task :migrate => 'sq:migrate:up'
|
39
|
+
|
40
|
+
desc "Create the database"
|
41
|
+
task :create => :environment do
|
42
|
+
config = Sequel::Model.db.opts
|
43
|
+
user, password, host = config[:user], config[:password], config[:host]
|
44
|
+
database = config[:database]
|
45
|
+
charset = config[:charset] || ENV['CHARSET'] || 'utf8'
|
46
|
+
collation = config[:collation] || ENV['COLLATION'] || 'utf8_unicode_ci'
|
47
|
+
|
48
|
+
puts "=> Creating database '#{database}'"
|
49
|
+
if config[:adapter] == 'sqlite3'
|
50
|
+
::Sequel.sqlite(database)
|
51
|
+
else
|
52
|
+
require 'padrino-gen/padrino-tasks/sql-helpers'
|
53
|
+
Padrino::Generators::SqlHelpers.create_db(config[:adapter], user, password, host, database, charset, collation)
|
54
|
+
end
|
55
|
+
puts "<= sq:create executed"
|
56
|
+
end
|
57
|
+
|
58
|
+
desc "Drop the database (postgres and mysql only)"
|
59
|
+
task :drop => :environment do
|
60
|
+
config = ::Sequel::Model.db.opts
|
61
|
+
user, password, host, database = config[:user], config[:password], config[:host], config[:database]
|
62
|
+
|
63
|
+
::Sequel::Model.db.disconnect
|
64
|
+
|
65
|
+
puts "=> Dropping database '#{database}'"
|
66
|
+
if config[:adapter] == 'sqlite3'
|
67
|
+
File.delete(database) if File.exist?(database)
|
68
|
+
else
|
69
|
+
Padrino::Generators::SqlHelpers.drop_db(config[:adapter], user, password, host, database)
|
70
|
+
end
|
71
|
+
puts "<= sq:drop executed"
|
72
|
+
end
|
73
|
+
|
39
74
|
end
|
40
75
|
|
41
76
|
task 'db:migrate' => 'sq:migrate'
|
77
|
+
task 'db:reset' => ['sq:drop', 'sq:create', 'sq:migrate', 'seed']
|
42
78
|
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Padrino
|
2
|
+
module Generators
|
3
|
+
module SqlHelpers
|
4
|
+
def self.create_db(adapter, user, password, host, database, charset, collation)
|
5
|
+
case adapter
|
6
|
+
when 'postgres'
|
7
|
+
arguments = []
|
8
|
+
arguments << "--encoding=#{charset}" if charset
|
9
|
+
arguments << "--host=#{host}" if host
|
10
|
+
arguments << "--username=#{user}" if user
|
11
|
+
arguments << database
|
12
|
+
system("createdb", *arguments)
|
13
|
+
when 'mysql'
|
14
|
+
arguments = ["--user=#{user}"]
|
15
|
+
arguments << "--password=#{password}" unless password.blank?
|
16
|
+
|
17
|
+
unless %w[127.0.0.1 localhost].include?(host)
|
18
|
+
arguments << "--host=#{host}"
|
19
|
+
end
|
20
|
+
|
21
|
+
arguments << '-e'
|
22
|
+
arguments << "CREATE DATABASE #{database} DEFAULT CHARACTER SET #{charset} DEFAULT COLLATE #{collation}"
|
23
|
+
|
24
|
+
system('mysql',*arguments)
|
25
|
+
else
|
26
|
+
raise "Adapter #{adapter} not supported for creating databases yet."
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.drop_db(adapter, user, password, host, database)
|
31
|
+
case adapter
|
32
|
+
when 'postgres'
|
33
|
+
arguments = []
|
34
|
+
arguments << "--host=#{host}" if host
|
35
|
+
arguments << "--username=#{user}" if user
|
36
|
+
arguments << database
|
37
|
+
system("dropdb", *arguments)
|
38
|
+
when 'mysql'
|
39
|
+
arguments = ["--user=#{user}"]
|
40
|
+
arguments << "--password=#{password}" unless password.blank?
|
41
|
+
|
42
|
+
unless %w[127.0.0.1 localhost].include?(host)
|
43
|
+
arguments << "--host=#{host}"
|
44
|
+
end
|
45
|
+
|
46
|
+
arguments << '-e'
|
47
|
+
arguments << "DROP DATABASE IF EXISTS #{database}"
|
48
|
+
|
49
|
+
system('mysql',*arguments)
|
50
|
+
else
|
51
|
+
raise "Adapter #{adapter} not supported for dropping databases yet."
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -41,6 +41,19 @@ describe "ProjectGenerator" do
|
|
41
41
|
assert_match_in_file("Padrino.mount('ProjectCom::WsDci2011', :app_file => Padrino.root('ws_dci_2011/app.rb')).to('/ws_dci_2011')", "#{@apptmp}/project.com/config/apps.rb")
|
42
42
|
end
|
43
43
|
|
44
|
+
should "generate nested path with dashes in name" do
|
45
|
+
capture_io { generate(:project, 'sample-project', "--root=#{@apptmp}") }
|
46
|
+
assert_file_exists("#{@apptmp}/sample-project")
|
47
|
+
assert_match_in_file(/module SampleProject/, "#{@apptmp}/sample-project/app/app.rb")
|
48
|
+
assert_match_in_file(/class App < Padrino::Application/, "#{@apptmp}/sample-project/app/app.rb")
|
49
|
+
assert_match_in_file("Padrino.mount('SampleProject::App', :app_file => Padrino.root('app/app.rb')).to('/')", "#{@apptmp}/sample-project/config/apps.rb")
|
50
|
+
capture_io { generate(:app, 'ws-dci-2011', "--root=#{@apptmp}/sample-project") }
|
51
|
+
assert_file_exists("#{@apptmp}/sample-project/ws_dci_2011")
|
52
|
+
assert_match_in_file(/module SampleProject/, "#{@apptmp}/sample-project/ws_dci_2011/app.rb")
|
53
|
+
assert_match_in_file(/class WsDci2011 < Padrino::Application/, "#{@apptmp}/sample-project/ws_dci_2011/app.rb")
|
54
|
+
assert_match_in_file("Padrino.mount('SampleProject::WsDci2011', :app_file => Padrino.root('ws_dci_2011/app.rb')).to('/ws_dci_2011')", "#{@apptmp}/sample-project/config/apps.rb")
|
55
|
+
end
|
56
|
+
|
44
57
|
should "raise an Error when given invalid constant names" do
|
45
58
|
assert_raises(::NameError) { capture_io { generate(:project, "123asdf", "--root=#{@apptmp}") } }
|
46
59
|
assert_raises(::NameError) { capture_io { generate(:project, "./sample_project", "--root=#{@apptmp}") } }
|
@@ -96,6 +109,22 @@ describe "ProjectGenerator" do
|
|
96
109
|
assert_file_exists("#{@apptmp}/sample_gem/README.md")
|
97
110
|
end
|
98
111
|
|
112
|
+
should "generate gemspec and special files with dashes in name" do
|
113
|
+
capture_io { generate(:project,'sample-gem', '--gem', "--root=#{@apptmp}") }
|
114
|
+
assert_file_exists("#{@apptmp}/sample-gem/sample-gem.gemspec")
|
115
|
+
assert_file_exists("#{@apptmp}/sample-gem/README.md")
|
116
|
+
assert_match_in_file(/\/lib\/sample-gem\/version/,"#{@apptmp}/sample-gem/sample-gem.gemspec")
|
117
|
+
assert_match_in_file(/"sample-gem"/,"#{@apptmp}/sample-gem/sample-gem.gemspec")
|
118
|
+
assert_match_in_file(/SampleGem::VERSION/,"#{@apptmp}/sample-gem/sample-gem.gemspec")
|
119
|
+
assert_match_in_file(/^# SampleGem/,"#{@apptmp}/sample-gem/README.md")
|
120
|
+
assert_match_in_file(/SampleGem::App/,"#{@apptmp}/sample-gem/README.md")
|
121
|
+
assert_match_in_file(/^module SampleGem/,"#{@apptmp}/sample-gem/lib/sample-gem.rb")
|
122
|
+
assert_match_in_file(/gem! "sample-gem"/,"#{@apptmp}/sample-gem/lib/sample-gem.rb")
|
123
|
+
assert_match_in_file(/^module SampleGem/,"#{@apptmp}/sample-gem/lib/sample-gem/version.rb")
|
124
|
+
assert_match_in_file(/^module SampleGem/,"#{@apptmp}/sample-gem/app/app.rb")
|
125
|
+
assert_match_in_file(/class App/,"#{@apptmp}/sample-gem/app/app.rb")
|
126
|
+
end
|
127
|
+
|
99
128
|
should "not create models folder if no orm is chosen" do
|
100
129
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '--orm=none') }
|
101
130
|
assert_no_dir_exists("#{@apptmp}/sample_project/models")
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: padrino-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.11.
|
4
|
+
version: 0.11.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -12,7 +12,7 @@ authors:
|
|
12
12
|
autorequire:
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
|
-
date: 2013-
|
15
|
+
date: 2013-07-29 00:00:00.000000000 Z
|
16
16
|
dependencies:
|
17
17
|
- !ruby/object:Gem::Dependency
|
18
18
|
name: padrino-core
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
requirements:
|
22
22
|
- - '='
|
23
23
|
- !ruby/object:Gem::Version
|
24
|
-
version: 0.11.
|
24
|
+
version: 0.11.3
|
25
25
|
type: :runtime
|
26
26
|
prerelease: false
|
27
27
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
requirements:
|
30
30
|
- - '='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 0.11.
|
32
|
+
version: 0.11.3
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: bundler
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -133,6 +133,7 @@ files:
|
|
133
133
|
- lib/padrino-gen/padrino-tasks/mongoid.rb
|
134
134
|
- lib/padrino-gen/padrino-tasks/mongomapper.rb
|
135
135
|
- lib/padrino-gen/padrino-tasks/sequel.rb
|
136
|
+
- lib/padrino-gen/padrino-tasks/sql-helpers.rb
|
136
137
|
- padrino-gen.gemspec
|
137
138
|
- test/fixtures/admin_template.rb
|
138
139
|
- test/fixtures/example_template.rb
|
@@ -176,9 +177,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
176
177
|
- - ! '>='
|
177
178
|
- !ruby/object:Gem::Version
|
178
179
|
version: '0'
|
179
|
-
segments:
|
180
|
-
- 0
|
181
|
-
hash: -2733379671843302871
|
182
180
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
183
181
|
none: false
|
184
182
|
requirements:
|