padrino-gen 0.13.1 → 0.13.2
Sign up to get free protection for your applications and to get access to all the features.
- 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: []
|