padrino-gen 0.13.1 → 0.13.2
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/lib/padrino-gen/generators/actions.rb +16 -4
- data/lib/padrino-gen/generators/app/app.rb.tt +2 -1
- data/lib/padrino-gen/generators/components/actions.rb +2 -2
- data/lib/padrino-gen/generators/components/orms/activerecord.rb +1 -1
- data/lib/padrino-gen/generators/components/orms/mongoid.rb +19 -38
- data/lib/padrino-gen/generators/components/stylesheets/compass.rb +4 -15
- data/lib/padrino-gen/generators/components/tests/bacon.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/minitest.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/riot.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/rspec.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/shoulda.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/steak.rb +2 -0
- data/lib/padrino-gen/generators/components/tests/testunit.rb +2 -0
- data/lib/padrino-gen/generators/controller.rb +1 -0
- data/lib/padrino-gen/generators/helper.rb +1 -0
- data/lib/padrino-gen/generators/mailer.rb +1 -0
- data/lib/padrino-gen/generators/migration.rb +1 -0
- data/lib/padrino-gen/generators/plugin.rb +1 -1
- data/lib/padrino-gen/generators/project/config/boot.rb +7 -0
- data/lib/padrino-gen/generators/project.rb +2 -1
- data/lib/padrino-gen/generators/task.rb +1 -0
- data/lib/padrino-gen/generators/templates/Gemfile.tt +10 -0
- data/lib/padrino-gen/generators/templates/Rakefile.tt +2 -0
- data/lib/padrino-gen/padrino-tasks/activerecord.rb +6 -0
- data/test/helper.rb +14 -1
- data/test/test_controller_generator.rb +5 -0
- data/test/test_helper_generator.rb +5 -0
- data/test/test_mailer_generator.rb +5 -0
- data/test/test_migration_generator.rb +5 -0
- data/test/test_model_generator.rb +24 -24
- data/test/test_plugin_generator.rb +4 -0
- data/test/test_project_generator.rb +6 -6
- data/test/test_task_generator.rb +5 -0
- metadata +16 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f8ab7a90610830c747530e9eac64e54a8448461
|
4
|
+
data.tar.gz: f312d806fb6dc5a75457005f929afa3573e62c22
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04cc205b2b510cd07a67c4390864ac27a727f5dceb5657a4985bad59c91a6708f7279198ce5c2c68448d8462b22de1363da5082faa4f75e718138f159abe3d69
|
7
|
+
data.tar.gz: 5658e955f42db155d572f671686d8c75e35790ff4c5ed840346125ad4d2d5b6f6f8acb4bb57f56ee01c3d784e5082706b4ff1e14330ed69c8dc7cae35191ebbd
|
@@ -377,9 +377,9 @@ WARNING
|
|
377
377
|
#
|
378
378
|
def initializer(name, data=nil)
|
379
379
|
@_init_name, @_init_data = name, data
|
380
|
-
register = data
|
380
|
+
register = data ? " register #{name.to_s.underscore.camelize}Initializer\n" : " register #{name}\n"
|
381
381
|
inject_into_file destination_root("/app/app.rb"), register, :after => "Padrino::Application\n"
|
382
|
-
template "templates/initializer.rb.tt", destination_root("/
|
382
|
+
template "templates/initializer.rb.tt", destination_root("/config/initializers/#{name}.rb") if data
|
383
383
|
end
|
384
384
|
|
385
385
|
##
|
@@ -520,12 +520,24 @@ WARNING
|
|
520
520
|
#
|
521
521
|
def valid_constant?(name)
|
522
522
|
if name =~ /^\d/
|
523
|
-
|
523
|
+
fail ::NameError, "Constant name #{name} cannot start with numbers"
|
524
524
|
elsif name =~ /^\W/
|
525
|
-
|
525
|
+
fail ::NameError, "Constant name #{name} cannot start with non-word character"
|
526
526
|
end
|
527
527
|
end
|
528
528
|
|
529
|
+
##
|
530
|
+
# Validates namespace name (controller name, etc.) or fails with an error.
|
531
|
+
#
|
532
|
+
# @example
|
533
|
+
# validate_namespace 'Project_One1' #=> pass
|
534
|
+
# validate_namespace 'Erroneous/name' #=> fail
|
535
|
+
#
|
536
|
+
def validate_namespace(name)
|
537
|
+
valid_constant? name
|
538
|
+
name.match(/^[[:alnum:]_]+$/) || fail(::NameError, "Namespace '#{name}' must consist only of alphanumeric characters or '_'")
|
539
|
+
end
|
540
|
+
|
529
541
|
##
|
530
542
|
# Recognizes the path of application.
|
531
543
|
#
|
@@ -144,7 +144,7 @@ module Padrino
|
|
144
144
|
# => inject_into_file("test/test_config.rb", TEST.gsub(/CLASS_NAME/, @app_name), :after => "set :environment, :test")
|
145
145
|
#
|
146
146
|
def insert_test_suite_setup(suite_text, options={})
|
147
|
-
options
|
147
|
+
options = { :path => "test/test_config.rb" }.update(options)
|
148
148
|
create_file(options[:path], suite_text.gsub(/CLASS_NAME/, "#{@project_name}::#{@app_name}"))
|
149
149
|
end
|
150
150
|
|
@@ -161,7 +161,7 @@ module Padrino
|
|
161
161
|
# => inject_into_file("test/test_config.rb", " include Mocha::API\n", :after => /class.*?\n/)
|
162
162
|
#
|
163
163
|
def insert_mocking_include(library_name, options={})
|
164
|
-
options
|
164
|
+
options = { :indent => 2, :after => /class.*?\n/, :path => "test/test_config.rb" }.update(options)
|
165
165
|
return unless File.exist?(destination_root(options[:path]))
|
166
166
|
include_text = indent_spaces(2) + "include #{library_name}\n"
|
167
167
|
inject_into_file(options[:path], include_text, :after => options[:after])
|
@@ -1,31 +1,4 @@
|
|
1
1
|
MONGOID = (<<-MONGO) unless defined?(MONGOID)
|
2
|
-
# Connection.new takes host and port
|
3
|
-
host = 'localhost'
|
4
|
-
port = Mongo::Connection::DEFAULT_PORT
|
5
|
-
|
6
|
-
database_name = case Padrino.env
|
7
|
-
when :development then '!NAME!_development'
|
8
|
-
when :production then '!NAME!_production'
|
9
|
-
when :test then '!NAME!_test'
|
10
|
-
end
|
11
|
-
|
12
|
-
Mongoid.database = Mongo::Connection.new(host, port).db(database_name)
|
13
|
-
|
14
|
-
# You can also configure Mongoid this way:
|
15
|
-
# Mongoid.configure do |config|
|
16
|
-
# name = @settings["database"]
|
17
|
-
# host = @settings["host"]
|
18
|
-
# config.master = Mongo::Connection.new.db(name)
|
19
|
-
# config.slaves = [
|
20
|
-
# Mongo::Connection.new(host, @settings["slave_one"]["port"], :slave_ok => true).db(name),
|
21
|
-
# Mongo::Connection.new(host, @settings["slave_two"]["port"], :slave_ok => true).db(name)
|
22
|
-
# ]
|
23
|
-
# end
|
24
|
-
#
|
25
|
-
# More installation and setup notes are on http://mongoid.org/.
|
26
|
-
MONGO
|
27
|
-
|
28
|
-
MONGOID3 = (<<-MONGO) unless defined?(MONGOID3)
|
29
2
|
# Connection.new takes host and port.
|
30
3
|
|
31
4
|
host = 'localhost'
|
@@ -38,12 +11,18 @@ database_name = case Padrino.env
|
|
38
11
|
end
|
39
12
|
|
40
13
|
# Use MONGO_URI if it's set as an environmental variable.
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
14
|
+
database_settings = if ENV['MONGO_URI']
|
15
|
+
{default: {uri: ENV['MONGO_URI'] }}
|
16
|
+
else
|
17
|
+
{default: {hosts: ["#\{host\}:#\{port\}"], database: database_name}}
|
18
|
+
end
|
19
|
+
|
20
|
+
case Mongoid::VERSION
|
21
|
+
when /^(3|4)/
|
22
|
+
Mongoid::Config.sessions = database_settings
|
23
|
+
else
|
24
|
+
Mongoid::Config.load_configuration :clients => database_settings
|
25
|
+
end
|
47
26
|
|
48
27
|
# If you want to use a YML file for config, use this instead:
|
49
28
|
#
|
@@ -51,31 +30,33 @@ Mongoid::Config.sessions =
|
|
51
30
|
#
|
52
31
|
# And add a config/database.yml file like this:
|
53
32
|
# development:
|
54
|
-
# sessions
|
33
|
+
# clients: #Replace clients with sessions to work with Mongoid version 3.x or 4.x
|
55
34
|
# default:
|
56
35
|
# database: !NAME!_development
|
57
36
|
# hosts:
|
58
37
|
# - localhost:27017
|
38
|
+
#
|
59
39
|
# production:
|
60
|
-
# sessions
|
40
|
+
# clients: #Replace clients with sessions to work with Mongoid version 3.x or 4.x
|
61
41
|
# default:
|
62
42
|
# database: !NAME!_production
|
63
43
|
# hosts:
|
64
44
|
# - localhost:27017
|
45
|
+
#
|
65
46
|
# test:
|
66
|
-
# sessions
|
47
|
+
# clients: #Replace clients with sessions to work with Mongoid version 3.x or 4.x
|
67
48
|
# default:
|
68
49
|
# database: !NAME!_test
|
69
50
|
# hosts:
|
70
51
|
# - localhost:27017
|
71
52
|
#
|
72
53
|
#
|
73
|
-
# More installation and setup notes are on
|
54
|
+
# More installation and setup notes are on https://docs.mongodb.org/ecosystem/tutorial/mongoid-installation/
|
74
55
|
MONGO
|
75
56
|
|
76
57
|
def setup_orm
|
77
58
|
require_dependencies 'mongoid', :version => '>= 3.0.0'
|
78
|
-
create_file('config/database.rb',
|
59
|
+
create_file('config/database.rb', MONGOID.gsub(/!NAME!/, @project_name.underscore))
|
79
60
|
end
|
80
61
|
|
81
62
|
MONGOID_MODEL = (<<-MODEL) unless defined?(MONGOID_MODEL)
|
@@ -1,10 +1,7 @@
|
|
1
1
|
COMPASS_INIT = <<-COMPASS unless defined?(COMPASS_INIT)
|
2
|
-
# Enables support for Compass, a stylesheet authoring framework based on SASS.
|
3
|
-
# See http://compass-style.org/ for more details.
|
4
|
-
# Store Compass/SASS files (by default) within 'app/stylesheets'.
|
5
|
-
|
6
|
-
module CompassInitializer
|
7
|
-
def self.registered(app)
|
2
|
+
# Enables support for Compass, a stylesheet authoring framework based on SASS.
|
3
|
+
# See http://compass-style.org/ for more details.
|
4
|
+
# Store Compass/SASS files (by default) within 'app/stylesheets'.
|
8
5
|
require 'sass/plugin/rack'
|
9
6
|
|
10
7
|
Compass.configuration do |config|
|
@@ -22,18 +19,10 @@ module CompassInitializer
|
|
22
19
|
Compass.handle_configuration_change!
|
23
20
|
|
24
21
|
app.use Sass::Plugin::Rack
|
25
|
-
end
|
26
|
-
end
|
27
22
|
COMPASS
|
28
23
|
|
29
|
-
COMPASS_REGISTER = <<-COMPASSR unless defined?(COMPASS_REGISTER)
|
30
|
-
register CompassInitializer\n
|
31
|
-
COMPASSR
|
32
|
-
|
33
24
|
def setup_stylesheet
|
34
25
|
require_dependencies 'compass-blueprint'
|
35
|
-
|
36
|
-
inject_into_file destination_root('/app/app.rb'), COMPASS_REGISTER, :after => "register Padrino::Helpers\n"
|
37
|
-
|
26
|
+
initializer :compass, COMPASS_INIT.chomp
|
38
27
|
directory "components/stylesheets/compass/", destination_root('/app/stylesheets')
|
39
28
|
end
|
@@ -55,7 +55,7 @@ module Padrino
|
|
55
55
|
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
56
56
|
http.start do
|
57
57
|
http.request_get(uri.path) do |res|
|
58
|
-
plugins = res.body.scan(%r{/plugins/(\w+)_plugin.rb}).uniq
|
58
|
+
plugins = res.body.scan(%r{/plugins/(\w+-\w+)_plugin.rb}).uniq
|
59
59
|
end
|
60
60
|
end
|
61
61
|
say "Available plugins:", :green
|
@@ -34,8 +34,15 @@ Bundler.require(:default, RACK_ENV)
|
|
34
34
|
# include Padrino::Helpers::TranslationHelpers
|
35
35
|
# end
|
36
36
|
|
37
|
+
##
|
38
|
+
# Require initializers before all other dependencies.
|
39
|
+
# Dependencies from 'config' folder are NOT re-required on reload.
|
40
|
+
#
|
41
|
+
Padrino.dependency_paths.unshift Padrino.root('config/initializers/*.rb')
|
42
|
+
|
37
43
|
##
|
38
44
|
# Add your before (RE)load hooks here
|
45
|
+
# These hooks are run before any dependencies are required.
|
39
46
|
#
|
40
47
|
Padrino.before_load do
|
41
48
|
end
|
@@ -27,10 +27,11 @@ module Padrino
|
|
27
27
|
class_option :dev, :desc => 'Use padrino from a git checkout', :default => false, :type => :boolean
|
28
28
|
class_option :tiny, :desc => 'Generate tiny app skeleton', :aliases => '-i', :default => false, :type => :boolean
|
29
29
|
class_option :lean, :desc => 'Generate lean project without apps', :aliases => '-l', :default => false, :type => :boolean
|
30
|
-
class_option :
|
30
|
+
class_option :api, :desc => 'Generate minimal project for APIs', :default => false, :type => :boolean
|
31
31
|
class_option :template, :desc => 'Generate project from template', :aliases => '-p', :default => nil, :type => :string
|
32
32
|
class_option :gem, :desc => 'Generate project as a gem', :aliases => '-g', :default => false, :type => :boolean
|
33
33
|
class_option :migration_format, :desc => 'Filename format for migrations (number, timestamp)', :default => 'number', :type => :string
|
34
|
+
class_option :adapter, :desc => 'SQL adapter for ORM (sqlite, mysql, mysql2, mysql-gem, postgres)', :aliases => '-a', :default => 'sqlite', :type => :string
|
34
35
|
|
35
36
|
# Definitions for the available customizable components.
|
36
37
|
defines_component_options
|
@@ -20,6 +20,15 @@ gem 'rake'
|
|
20
20
|
|
21
21
|
# Test requirements
|
22
22
|
|
23
|
+
<% if options.api? -%>
|
24
|
+
<% if options.dev? -%>
|
25
|
+
gem 'padrino-core', :path => '<%= Padrino::Generators::DEV_PATH %>/padrino-core'
|
26
|
+
gem 'padrino-gen', :path => '<%= Padrino::Generators::DEV_PATH %>/padrino-gen'
|
27
|
+
<% else -%>
|
28
|
+
gem 'padrino-core', '<%= Padrino.version %>'
|
29
|
+
gem 'padrino-gen', '<%= Padrino.version %>'
|
30
|
+
<% end -%>
|
31
|
+
<% else -%>
|
23
32
|
# Padrino Stable Gem
|
24
33
|
<% if options.dev? %># <% end %>gem 'padrino', '<%= Padrino.version %>'
|
25
34
|
|
@@ -30,3 +39,4 @@ gem 'rake'
|
|
30
39
|
<% unless options.dev? %># <% end %>%w(core support gen helpers cache mailer admin).each do |g|
|
31
40
|
<% unless options.dev? %># <% end %> gem 'padrino-' + g, <% if options.dev? %>:path => '<%= Padrino::Generators::DEV_PATH %>/padrino-' + g<% else %>'<%= Padrino.version %>'<% end %>
|
32
41
|
<% unless options.dev? %># <% end %>end
|
42
|
+
<% end -%>
|
@@ -309,6 +309,12 @@ if PadrinoTasks.load?(:activerecord, defined?(ActiveRecord))
|
|
309
309
|
puts
|
310
310
|
end
|
311
311
|
end
|
312
|
+
|
313
|
+
task :seed => :environment do
|
314
|
+
missing_model_features = Padrino.send(:default_dependency_paths) - Padrino.send(:dependency_paths)
|
315
|
+
Padrino.require_dependencies(missing_model_features)
|
316
|
+
Rake::Task['db:seed'].invoke
|
317
|
+
end
|
312
318
|
end
|
313
319
|
|
314
320
|
def drop_database(config)
|
data/test/helper.rb
CHANGED
@@ -14,6 +14,19 @@ require 'ext/minitest-spec'
|
|
14
14
|
|
15
15
|
Padrino::Generators.load_components!
|
16
16
|
|
17
|
+
# register fake URL to avoid downloading static files every time tests run
|
18
|
+
fake_uri_base = "https://raw.github.com/padrino/padrino-static/master/"
|
19
|
+
%W[
|
20
|
+
js/dojo.js ujs/dojo.js
|
21
|
+
js/ext.js ujs/ext.js
|
22
|
+
js/jquery.js ujs/jquery.js
|
23
|
+
js/mootools.js ujs/mootools.js
|
24
|
+
js/right.js ujs/right.js
|
25
|
+
js/protopak.js js/lowpro.js ujs/prototype.js
|
26
|
+
].each do |suffix|
|
27
|
+
FakeWeb.register_uri(:get, fake_uri_base + suffix, :body => '')
|
28
|
+
end
|
29
|
+
|
17
30
|
class MiniTest::Spec
|
18
31
|
include Webrat::Methods
|
19
32
|
include Webrat::Matchers
|
@@ -79,7 +92,7 @@ class MiniTest::Spec
|
|
79
92
|
# expects_initializer :test, "# Example"
|
80
93
|
def expects_initializer(name, body,options={})
|
81
94
|
#options.reverse_merge!(:root => "/tmp/sample_project")
|
82
|
-
path = File.join(options[:root],'
|
95
|
+
path = File.join(options[:root],'config/initializers',"#{name}.rb")
|
83
96
|
instance = mock
|
84
97
|
instance.expects(:invoke!).at_least_once
|
85
98
|
include_text = " register #{name.to_s.camelize}Initializer\n"
|
@@ -22,6 +22,11 @@ describe "ControllerGenerator" do
|
|
22
22
|
assert_no_file_exists("#{@apptmp}/app/controllers/demo.rb")
|
23
23
|
end
|
24
24
|
|
25
|
+
it 'should fail with NameError if given invalid namespace names' do
|
26
|
+
capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
|
27
|
+
assert_raises(::NameError) { capture_io { generate(:controller, "wrong/name", "--root=#{@apptmp}/sample") } }
|
28
|
+
end
|
29
|
+
|
25
30
|
it 'should generate controller within existing project' do
|
26
31
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
27
32
|
capture_io { generate(:controller, 'DemoItems', "-r=#{@apptmp}/sample_project") }
|
@@ -19,6 +19,11 @@ describe "HelperGenerator" do
|
|
19
19
|
assert_no_file_exists("#{@apptmp}/app/helpers/demo_helper.rb")
|
20
20
|
end
|
21
21
|
|
22
|
+
it 'should fail with NameError if given invalid namespace names' do
|
23
|
+
capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
|
24
|
+
assert_raises(::NameError) { capture_io { generate(:helper, "wrong/name", "--root=#{@apptmp}/sample") } }
|
25
|
+
end
|
26
|
+
|
22
27
|
it 'should generate helper within existing project' do
|
23
28
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
24
29
|
capture_io { generate(:helper, 'DemoItems', "-r=#{@apptmp}/sample_project") }
|
@@ -17,6 +17,11 @@ describe "MailerGenerator" do
|
|
17
17
|
assert_no_file_exists('/tmp/app/mailers/demo_mailer.rb')
|
18
18
|
end
|
19
19
|
|
20
|
+
it 'should fail with NameError if given invalid namespace names' do
|
21
|
+
capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
|
22
|
+
assert_raises(::NameError) { capture_io { generate(:mailer, "wrong/name", "--root=#{@apptmp}/sample") } }
|
23
|
+
end
|
24
|
+
|
20
25
|
it 'should generate mailer in specified app' do
|
21
26
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
22
27
|
capture_io { generate(:app, 'subby', "-r=#{@apptmp}/sample_project") }
|
@@ -17,6 +17,11 @@ describe "MigrationGenerator" do
|
|
17
17
|
assert_no_file_exists("#{@apptmp}/db/migrate")
|
18
18
|
end
|
19
19
|
|
20
|
+
it 'should fail with NameError if given invalid namespace names' do
|
21
|
+
capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
|
22
|
+
assert_raises(::NameError) { capture_io { generate(:migration, "wrong/name", "--root=#{@apptmp}/sample") } }
|
23
|
+
end
|
24
|
+
|
20
25
|
it 'should fail if we do not use an adapter' do
|
21
26
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon') }
|
22
27
|
assert_raises(SystemExit) { capture_io { generate(:migration, 'AddEmailToUsers', "-r=#{@apptmp}/sample_project") } }
|
@@ -79,14 +79,14 @@ describe "ModelGenerator" do
|
|
79
79
|
it 'should generate a default type value for fields' do
|
80
80
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
81
81
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
82
|
-
capture_io { generate(:model, '
|
83
|
-
migration_file_path = "#{@apptmp}/sample_project/db/migrate/
|
84
|
-
assert_match_in_file(/class
|
85
|
-
assert_match_in_file(/ create_table :
|
82
|
+
capture_io { generate(:model, 'friend', "name", "age:integer", "email", "-r=#{@apptmp}/sample_project") }
|
83
|
+
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
84
|
+
assert_match_in_file(/class CreateFriends < ActiveRecord::Migration/m, migration_file_path)
|
85
|
+
assert_match_in_file(/ create_table :friends/m, migration_file_path)
|
86
86
|
assert_match_in_file(/ t.string :name/m, migration_file_path)
|
87
87
|
assert_match_in_file(/ t.integer :age/m, migration_file_path)
|
88
88
|
assert_match_in_file(/ t.string :email/m, migration_file_path)
|
89
|
-
assert_match_in_file(/ drop_table :
|
89
|
+
assert_match_in_file(/ drop_table :friends/m, migration_file_path)
|
90
90
|
end
|
91
91
|
|
92
92
|
it 'should abort if model name already exists' do
|
@@ -149,14 +149,14 @@ describe "ModelGenerator" do
|
|
149
149
|
it 'should generate migration file with given fields' do
|
150
150
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
151
151
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-t=bacon', '-d=activerecord') }
|
152
|
-
capture_io { generate(:model, '
|
153
|
-
migration_file_path = "#{@apptmp}/sample_project/db/migrate/
|
154
|
-
assert_match_in_file(/class
|
155
|
-
assert_match_in_file(/ create_table :
|
152
|
+
capture_io { generate(:model, 'friend', "name:string", "age:integer", "email:string", "-r=#{@apptmp}/sample_project") }
|
153
|
+
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
154
|
+
assert_match_in_file(/class CreateFriends < ActiveRecord::Migration/m, migration_file_path)
|
155
|
+
assert_match_in_file(/ create_table :friends/m, migration_file_path)
|
156
156
|
assert_match_in_file(/ t.string :name/m, migration_file_path)
|
157
157
|
assert_match_in_file(/ t.integer :age/m, migration_file_path)
|
158
158
|
assert_match_in_file(/ t.string :email/m, migration_file_path)
|
159
|
-
assert_match_in_file(/ drop_table :
|
159
|
+
assert_match_in_file(/ drop_table :friends/m, migration_file_path)
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
@@ -239,12 +239,12 @@ describe "ModelGenerator" do
|
|
239
239
|
it 'should properly generate version numbers' do
|
240
240
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
241
241
|
capture_io { generate(:model, 'user', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
242
|
-
capture_io { generate(:model, '
|
242
|
+
capture_io { generate(:model, 'friend', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
243
243
|
capture_io { generate(:model, 'account', "name:string", "age:integer", "created_at:datetime", "-r=#{@apptmp}/sample_project") }
|
244
244
|
assert_match_in_file(/class User\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/user.rb")
|
245
245
|
assert_match_in_file(/migration 1, :create_users do/m, "#{@apptmp}/sample_project/db/migrate/001_create_users.rb")
|
246
|
-
assert_match_in_file(/class
|
247
|
-
assert_match_in_file(/migration 2, :
|
246
|
+
assert_match_in_file(/class Friend\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/friend.rb")
|
247
|
+
assert_match_in_file(/migration 2, :create_friends do/m, "#{@apptmp}/sample_project/db/migrate/002_create_friends.rb")
|
248
248
|
assert_match_in_file(/class Account\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/account.rb")
|
249
249
|
assert_match_in_file(/migration 3, :create_accounts do/m, "#{@apptmp}/sample_project/db/migrate/003_create_accounts.rb")
|
250
250
|
end
|
@@ -252,15 +252,15 @@ describe "ModelGenerator" do
|
|
252
252
|
it 'should generate migration with given fields' do
|
253
253
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
254
254
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=datamapper') }
|
255
|
-
capture_io { generate(:model, '
|
256
|
-
assert_match_in_file(/class
|
257
|
-
migration_file_path = "#{@apptmp}/sample_project/db/migrate/
|
258
|
-
assert_match_in_file(/migration 1, :
|
259
|
-
assert_match_in_file(/create_table :
|
255
|
+
capture_io { generate(:model, 'friend', "name:string", "created_at:date_time", "email:string", "-r=#{@apptmp}/sample_project") }
|
256
|
+
assert_match_in_file(/class Friend\n\s+include DataMapper::Resource/m, "#{@apptmp}/sample_project/models/friend.rb")
|
257
|
+
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
258
|
+
assert_match_in_file(/migration 1, :create_friends do/m, migration_file_path)
|
259
|
+
assert_match_in_file(/create_table :friends do/m, migration_file_path)
|
260
260
|
assert_match_in_file(/column :name, DataMapper::Property::String/m, migration_file_path)
|
261
261
|
assert_match_in_file(/column :created_at, DataMapper::Property::DateTime/m, migration_file_path)
|
262
262
|
assert_match_in_file(/column :email, DataMapper::Property::String/m, migration_file_path)
|
263
|
-
assert_match_in_file(/drop_table :
|
263
|
+
assert_match_in_file(/drop_table :friends/m, migration_file_path)
|
264
264
|
end
|
265
265
|
end
|
266
266
|
|
@@ -282,15 +282,15 @@ describe "ModelGenerator" do
|
|
282
282
|
it 'should generate migration file with given properties' do
|
283
283
|
current_time = stop_time_for_test.strftime("%Y%m%d%H%M%S")
|
284
284
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--script=none', '-d=sequel') }
|
285
|
-
capture_io { generate(:model, '
|
286
|
-
migration_file_path = "#{@apptmp}/sample_project/db/migrate/
|
287
|
-
assert_match_in_file(/class
|
285
|
+
capture_io { generate(:model, 'friend', "name:string", "age:integer", "created:datetime", "-r=#{@apptmp}/sample_project") }
|
286
|
+
migration_file_path = "#{@apptmp}/sample_project/db/migrate/001_create_friends.rb"
|
287
|
+
assert_match_in_file(/class Friend < Sequel::Model/m, "#{@apptmp}/sample_project/models/friend.rb")
|
288
288
|
assert_match_in_file(/Sequel\.migration do/m, migration_file_path)
|
289
|
-
assert_match_in_file(/create_table :
|
289
|
+
assert_match_in_file(/create_table :friends/m, migration_file_path)
|
290
290
|
assert_match_in_file(/String :name/m, migration_file_path)
|
291
291
|
assert_match_in_file(/Integer :age/m, migration_file_path)
|
292
292
|
assert_match_in_file(/DateTime :created/m, migration_file_path)
|
293
|
-
assert_match_in_file(/drop_table :
|
293
|
+
assert_match_in_file(/drop_table :friends/m, migration_file_path)
|
294
294
|
end
|
295
295
|
end
|
296
296
|
|
@@ -54,6 +54,7 @@ describe "PluginGenerator" do
|
|
54
54
|
|
55
55
|
it 'should resolve generic url properly' do
|
56
56
|
template_file = 'http://www.example.com/test.rb'
|
57
|
+
FakeWeb.register_uri :get, template_file, :body => ''
|
57
58
|
project_gen = Padrino::Generators::Project.new(['sample_project'], ["-p=#{template_file}", "-r=#{@apptmp}"], {})
|
58
59
|
project_gen.expects(:apply).with(template_file).returns(true).once
|
59
60
|
capture_io { project_gen.invoke_all }
|
@@ -71,6 +72,7 @@ describe "PluginGenerator" do
|
|
71
72
|
it 'should resolve official template' do
|
72
73
|
template_file = 'sampleblog'
|
73
74
|
resolved_path = "https://raw.github.com/padrino/padrino-recipes/master/templates/sampleblog_template.rb"
|
75
|
+
FakeWeb.register_uri :get, resolved_path, :body => template_file
|
74
76
|
project_gen = Padrino::Generators::Project.new(['sample_project'], ["-p=#{template_file}", "-r=#{@apptmp}"], {})
|
75
77
|
project_gen.expects(:apply).with(resolved_path).returns(true).once
|
76
78
|
capture_io { project_gen.invoke_all }
|
@@ -86,6 +88,7 @@ describe "PluginGenerator" do
|
|
86
88
|
it 'should resolve official plugin' do
|
87
89
|
template_file = 'hoptoad'
|
88
90
|
resolved_path = "https://raw.github.com/padrino/padrino-recipes/master/plugins/hoptoad_plugin.rb"
|
91
|
+
FakeWeb.register_uri :get, resolved_path, :body => template_file
|
89
92
|
plugin_gen = Padrino::Generators::Plugin.new([ template_file], ["-r=#{@apptmp}/sample_project"],{})
|
90
93
|
plugin_gen.expects(:in_app_root?).returns(true).once
|
91
94
|
plugin_gen.expects(:apply).with(resolved_path).returns(true).once
|
@@ -95,6 +98,7 @@ describe "PluginGenerator" do
|
|
95
98
|
it 'should print a warning if template cannot be found' do
|
96
99
|
template_file = 'hwat'
|
97
100
|
resolved_path = "https://raw.github.com/padrino/padrino-recipes/master/plugins/hwat_plugin.rb"
|
101
|
+
FakeWeb.register_uri :get, resolved_path, :status => 404
|
98
102
|
plugin_gen = Padrino::Generators::Plugin.new([ template_file], ["-r=#{@apptmp}/sample_project"],{})
|
99
103
|
plugin_gen.expects(:in_app_root?).returns(true).once
|
100
104
|
plugin_gen.expects(:say).with("The template at #{resolved_path} could not be found!", :red).returns(true).once
|
@@ -648,7 +648,7 @@ describe "ProjectGenerator" do
|
|
648
648
|
it 'should properly generate for sass' do
|
649
649
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--renderer=haml','--script=none','--stylesheet=sass') }
|
650
650
|
assert_match_in_file(/gem 'sass'/, "#{@apptmp}/sample_project/Gemfile")
|
651
|
-
assert_match_in_file(/module SassInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/
|
651
|
+
assert_match_in_file(/module SassInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/config/initializers/sass.rb")
|
652
652
|
assert_match_in_file(/register SassInitializer/m, "#{@apptmp}/sample_project/app/app.rb")
|
653
653
|
assert_dir_exists("#{@apptmp}/sample_project/app/stylesheets")
|
654
654
|
end
|
@@ -656,7 +656,7 @@ describe "ProjectGenerator" do
|
|
656
656
|
it 'should properly generate for less' do
|
657
657
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--renderer=haml','--script=none','--stylesheet=less') }
|
658
658
|
assert_match_in_file(/gem 'rack-less'/, "#{@apptmp}/sample_project/Gemfile")
|
659
|
-
assert_match_in_file(/module LessInitializer.*Rack::Less/m, "#{@apptmp}/sample_project/
|
659
|
+
assert_match_in_file(/module LessInitializer.*Rack::Less/m, "#{@apptmp}/sample_project/config/initializers/less.rb")
|
660
660
|
assert_match_in_file(/register LessInitializer/m, "#{@apptmp}/sample_project/app/app.rb")
|
661
661
|
assert_dir_exists("#{@apptmp}/sample_project/app/stylesheets")
|
662
662
|
end
|
@@ -664,8 +664,8 @@ describe "ProjectGenerator" do
|
|
664
664
|
it 'should properly generate for compass' do
|
665
665
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--renderer=haml','--script=none','--stylesheet=compass') }
|
666
666
|
assert_match_in_file(/gem 'compass-blueprint'/, "#{@apptmp}/sample_project/Gemfile")
|
667
|
-
assert_match_in_file(/Compass.configure_sass_plugin\!/, "#{@apptmp}/sample_project/
|
668
|
-
assert_match_in_file(/module CompassInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/
|
667
|
+
assert_match_in_file(/Compass.configure_sass_plugin\!/, "#{@apptmp}/sample_project/config/initializers/compass.rb")
|
668
|
+
assert_match_in_file(/module CompassInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/config/initializers/compass.rb")
|
669
669
|
assert_match_in_file(/register CompassInitializer/m, "#{@apptmp}/sample_project/app/app.rb")
|
670
670
|
|
671
671
|
assert_file_exists("#{@apptmp}/sample_project/app/stylesheets/application.scss")
|
@@ -675,8 +675,8 @@ describe "ProjectGenerator" do
|
|
675
675
|
it 'should properly generate for scss' do
|
676
676
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}", '--renderer=haml','--script=none','--stylesheet=scss') }
|
677
677
|
assert_match_in_file(/gem 'haml'/, "#{@apptmp}/sample_project/Gemfile")
|
678
|
-
assert_match_in_file(/module ScssInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/
|
679
|
-
assert_match_in_file(/Sass::Plugin.options\[:syntax\] = :scss/m, "#{@apptmp}/sample_project/
|
678
|
+
assert_match_in_file(/module ScssInitializer.*Sass::Plugin::Rack/m, "#{@apptmp}/sample_project/config/initializers/scss.rb")
|
679
|
+
assert_match_in_file(/Sass::Plugin.options\[:syntax\] = :scss/m, "#{@apptmp}/sample_project/config/initializers/scss.rb")
|
680
680
|
assert_match_in_file(/register ScssInitializer/m, "#{@apptmp}/sample_project/app/app.rb")
|
681
681
|
assert_dir_exists("#{@apptmp}/sample_project/app/stylesheets")
|
682
682
|
end
|
data/test/test_task_generator.rb
CHANGED
@@ -17,6 +17,11 @@ describe "TaskGenerator" do
|
|
17
17
|
assert_no_file_exists('/tmp/tasks/foo.rake')
|
18
18
|
end
|
19
19
|
|
20
|
+
it 'should fail with NameError if given invalid namespace names' do
|
21
|
+
capture_io { generate(:project, "sample", "--root=#{@apptmp}") }
|
22
|
+
assert_raises(::NameError) { capture_io { generate(:task, "wrong/name", "--root=#{@apptmp}/sample") } }
|
23
|
+
end
|
24
|
+
|
20
25
|
it 'should generate filename properly' do
|
21
26
|
capture_io { generate(:project, 'sample_project', "--root=#{@apptmp}") }
|
22
27
|
capture_io { generate(:task, 'DemoTask', "--namespace=Sample", "--description='This is a sample'", "-r=#{@apptmp}/sample_project") }
|
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.13.
|
4
|
+
version: 0.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Padrino Team
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-
|
14
|
+
date: 2016-05-09 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: padrino-core
|
@@ -19,26 +19,26 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.13.
|
22
|
+
version: 0.13.2
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.13.
|
29
|
+
version: 0.13.2
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: bundler
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- - ~>
|
34
|
+
- - "~>"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '1.0'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- - ~>
|
41
|
+
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '1.0'
|
44
44
|
- !ruby/object:Gem::Dependency
|
@@ -47,28 +47,28 @@ dependencies:
|
|
47
47
|
requirements:
|
48
48
|
- - '='
|
49
49
|
- !ruby/object:Gem::Version
|
50
|
-
version: 0.13.
|
50
|
+
version: 0.13.2
|
51
51
|
type: :development
|
52
52
|
prerelease: false
|
53
53
|
version_requirements: !ruby/object:Gem::Requirement
|
54
54
|
requirements:
|
55
55
|
- - '='
|
56
56
|
- !ruby/object:Gem::Version
|
57
|
-
version: 0.13.
|
57
|
+
version: 0.13.2
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: padrino-mailer
|
60
60
|
requirement: !ruby/object:Gem::Requirement
|
61
61
|
requirements:
|
62
62
|
- - '='
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 0.13.
|
64
|
+
version: 0.13.2
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
69
|
- - '='
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 0.13.
|
71
|
+
version: 0.13.2
|
72
72
|
description: Generators for easily creating and building padrino applications from
|
73
73
|
the console
|
74
74
|
email: padrinorb@gmail.com
|
@@ -78,9 +78,9 @@ extensions: []
|
|
78
78
|
extra_rdoc_files:
|
79
79
|
- README.rdoc
|
80
80
|
files:
|
81
|
-
- .document
|
82
|
-
- .gitignore
|
83
|
-
- .yardopts
|
81
|
+
- ".document"
|
82
|
+
- ".gitignore"
|
83
|
+
- ".yardopts"
|
84
84
|
- LICENSE.txt
|
85
85
|
- README.rdoc
|
86
86
|
- Rakefile
|
@@ -203,17 +203,17 @@ licenses:
|
|
203
203
|
metadata: {}
|
204
204
|
post_install_message:
|
205
205
|
rdoc_options:
|
206
|
-
- --charset=UTF-8
|
206
|
+
- "--charset=UTF-8"
|
207
207
|
require_paths:
|
208
208
|
- lib
|
209
209
|
required_ruby_version: !ruby/object:Gem::Requirement
|
210
210
|
requirements:
|
211
|
-
- -
|
211
|
+
- - ">="
|
212
212
|
- !ruby/object:Gem::Version
|
213
213
|
version: '0'
|
214
214
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
215
215
|
requirements:
|
216
|
-
- -
|
216
|
+
- - ">="
|
217
217
|
- !ruby/object:Gem::Version
|
218
218
|
version: 1.3.6
|
219
219
|
requirements: []
|