merb-gen 1.0.15 → 1.1.0.pre
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/Rakefile +59 -69
- data/bin/merb-gen +14 -2
- data/lib/generators/fcgi.rb +16 -0
- data/lib/generators/merb/merb_core.rb +14 -12
- data/lib/generators/merb/merb_flat.rb +11 -6
- data/lib/generators/merb/merb_stack.rb +14 -22
- data/lib/generators/merb/merb_very_flat.rb +32 -11
- data/lib/generators/passenger.rb +15 -0
- data/lib/generators/resource_controller.rb +1 -1
- data/lib/generators/templates/application/common/Gemfile +12 -0
- data/lib/generators/templates/application/common/Rakefile +10 -1
- data/lib/generators/templates/application/common/dotgitignore +3 -3
- data/lib/generators/templates/application/common/merb +20 -0
- data/lib/generators/templates/application/merb_core/autotest/merb_rspec.rb +9 -9
- data/lib/generators/templates/application/merb_core/config/init.rb +3 -5
- data/lib/generators/templates/application/merb_core/spec/spec.opts +1 -1
- data/lib/generators/templates/application/merb_core/spec/spec_helper.rb +9 -7
- data/lib/generators/templates/application/merb_core/test/test_helper.rb +9 -7
- data/lib/generators/templates/application/merb_flat/application.rbt +3 -0
- data/lib/generators/templates/application/merb_flat/config/init.rb +23 -19
- data/lib/generators/templates/application/merb_flat/spec/spec_helper.rb +8 -6
- data/lib/generators/templates/application/merb_flat/test/test_helper.rb +9 -7
- data/lib/generators/templates/application/merb_plugin/Rakefile +35 -4
- data/lib/generators/templates/application/merb_stack/Gemfile +48 -0
- data/lib/generators/templates/application/merb_stack/autotest/merb_rspec.rb +7 -7
- data/lib/generators/templates/application/merb_stack/config/init.rb +2 -2
- data/lib/generators/templates/application/merb_stack/config.ru +23 -0
- data/lib/generators/templates/application/merb_stack/spec/spec.opts +1 -1
- data/lib/generators/templates/application/merb_stack/spec/spec_helper.rb +9 -7
- data/lib/generators/templates/application/merb_stack/test/test_helper.rb +9 -7
- data/lib/generators/templates/application/merb_very_flat/application.rbt +1 -8
- data/lib/generators/templates/application/merb_very_flat/spec/spec_helper.rb +8 -6
- data/lib/generators/templates/application/merb_very_flat/test/test_helper.rb +9 -7
- data/lib/generators/templates/{application/common → component/fcgi}/dothtaccess +1 -2
- data/lib/generators/templates/{application/merb_stack/public → component/fcgi}/merb.fcgi +10 -4
- data/lib/generators/templates/component/model/spec/models/%file_name%_spec.rb +1 -1
- data/lib/merb-gen/app_generator.rb +58 -0
- data/lib/merb-gen/generator.rb +1 -1
- data/lib/merb-gen/version.rb +17 -0
- data/lib/merb-gen.rb +27 -25
- data/spec/controller_spec.rb +1 -1
- data/spec/fcgi_spec.rb +24 -0
- data/spec/generator_spec.rb +1 -1
- data/spec/layout_spec.rb +1 -1
- data/spec/merb_core_spec.rb +17 -5
- data/spec/merb_flat_spec.rb +10 -1
- data/spec/merb_plugin_spec.rb +3 -3
- data/spec/merb_stack_spec.rb +23 -10
- data/spec/merb_very_flat_spec.rb +13 -2
- data/spec/migration_spec.rb +1 -1
- data/spec/model_spec.rb +1 -1
- data/spec/named_generator_spec.rb +1 -1
- data/spec/namespaced_generator_spec.rb +1 -1
- data/spec/part_controller_spec.rb +1 -1
- data/spec/passenger_spec.rb +20 -0
- data/spec/resource_controller_spec.rb +1 -1
- data/spec/resource_spec.rb +1 -1
- data/spec/session_migration_spec.rb +1 -1
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +53 -4
- metadata +78 -45
- data/lib/generators/templates/application/common/doc.thor +0 -149
- data/lib/generators/templates/application/common/merb_thor/app_script.rb +0 -31
- data/lib/generators/templates/application/common/merb_thor/common.rb +0 -68
- data/lib/generators/templates/application/common/merb_thor/gem_ext.rb +0 -125
- data/lib/generators/templates/application/common/merb_thor/main.thor +0 -151
- data/lib/generators/templates/application/common/merb_thor/ops.rb +0 -93
- data/lib/generators/templates/application/common/merb_thor/utils.rb +0 -40
- data/lib/generators/templates/application/merb_core/public/merb.fcgi +0 -22
- data/lib/generators/templates/application/merb_stack/config/dependencies.rb +0 -34
- data/lib/generators/thor.rb +0 -33
@@ -1,15 +1,10 @@
|
|
1
1
|
# Go to http://wiki.merbivore.com/pages/init-rb
|
2
2
|
|
3
|
-
<%= "
|
3
|
+
<%= "use_orm :#{orm}" unless orm == :none %>
|
4
4
|
use_test :<%= testing_framework %>
|
5
5
|
use_template_engine :<%= template_engine %>
|
6
6
|
|
7
|
-
#
|
8
|
-
# to dependency definition:
|
9
|
-
# dependency "merb-slices", :immediate => true
|
10
|
-
#
|
11
|
-
# Specify a specific version of a dependency
|
12
|
-
# dependency "RedCloth", "> 3.0"
|
7
|
+
# Specify your dependencies in the Gemfile
|
13
8
|
|
14
9
|
Merb::BootLoader.before_app_loads do
|
15
10
|
# This will get executed after dependencies have been loaded but before your app's classes have loaded.
|
@@ -29,16 +24,25 @@ end
|
|
29
24
|
Merb::Config.use { |c|
|
30
25
|
c[:environment] = 'production',
|
31
26
|
c[:framework] = {},
|
32
|
-
c[:
|
33
|
-
c[:
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
27
|
+
c[:use_mutex] = false
|
28
|
+
c[:session_store] = 'cookie'
|
29
|
+
c[:session_id_key] = '_<%= base_name %>_session_id'
|
30
|
+
c[:session_secret_key] = '<%= Digest::SHA1.hexdigest(rand(100000000000).to_s).to_s %>'
|
31
|
+
|
32
|
+
if Merb.env?(:production)
|
33
|
+
# edit production settings
|
34
|
+
c[:log_level] = :error
|
35
|
+
c[:log_file] = Merb.root / "log" / "production.log"
|
36
|
+
c[:exception_details] = false
|
37
|
+
c[:reload_classes] = false
|
38
|
+
c[:reload_templates] = false
|
39
|
+
else
|
40
|
+
# edit development/test settings
|
41
|
+
c[:log_level] = :debug
|
42
|
+
c[:log_stream] = STDOUT
|
43
|
+
c[:exception_details] = true
|
44
|
+
c[:reload_classes] = true
|
45
|
+
c[:reload_templates] = true
|
46
|
+
c[:reload_time] = 0.5
|
47
|
+
end
|
44
48
|
}
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
11
|
require "spec"
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
11
|
require "merb-core"
|
@@ -16,4 +18,4 @@ Merb.start :environment => (ENV['MERB_ENV'] || 'test'),
|
|
16
18
|
class Test::Unit::TestCase
|
17
19
|
include Merb::Test::RequestHelper
|
18
20
|
# Add more helper methods to be used by all tests here...
|
19
|
-
end
|
21
|
+
end
|
@@ -1,4 +1,12 @@
|
|
1
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require '.bundle/environment'
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
9
|
+
end
|
2
10
|
require 'rake/gempackagetask'
|
3
11
|
|
4
12
|
require 'merb-core'
|
@@ -17,13 +25,13 @@ spec = Gem::Specification.new do |s|
|
|
17
25
|
s.version = GEM_VERSION
|
18
26
|
s.platform = Gem::Platform::RUBY
|
19
27
|
s.has_rdoc = true
|
20
|
-
s.extra_rdoc_files = ["README", "LICENSE",
|
28
|
+
s.extra_rdoc_files = ["README", "LICENSE", "TODO"]
|
21
29
|
s.summary = SUMMARY
|
22
30
|
s.description = s.summary
|
23
31
|
s.author = AUTHOR
|
24
32
|
s.email = EMAIL
|
25
33
|
s.homepage = HOMEPAGE
|
26
|
-
s.add_dependency('merb', '>= <%= Merb::VERSION %>')
|
34
|
+
s.add_dependency('merb-core', '>= <%= Merb::VERSION %>')
|
27
35
|
s.require_path = 'lib'
|
28
36
|
s.files = %w(LICENSE README Rakefile TODO) + Dir.glob("{lib,spec<%= bin ? ',bin' : '' %>}/**/*")
|
29
37
|
<% if bin %>
|
@@ -51,4 +59,27 @@ task :gemspec do
|
|
51
59
|
File.open("#{GEM_NAME}.gemspec", "w") do |file|
|
52
60
|
file.puts spec.to_ruby
|
53
61
|
end
|
54
|
-
end
|
62
|
+
end
|
63
|
+
|
64
|
+
begin
|
65
|
+
require 'spec'
|
66
|
+
require 'spec/rake/spectask'
|
67
|
+
|
68
|
+
task :default => [ :spec ]
|
69
|
+
|
70
|
+
desc 'Run specifications'
|
71
|
+
Spec::Rake::SpecTask.new(:spec) do |t|
|
72
|
+
t.spec_opts << '--options' << 'spec/spec.opts' if File.exists?('spec/spec.opts')
|
73
|
+
t.spec_opts << '--color' << '--format' << 'specdoc'
|
74
|
+
begin
|
75
|
+
require 'rcov'
|
76
|
+
t.rcov_opts << '--exclude' << 'spec'
|
77
|
+
t.rcov_opts << '--text-summary'
|
78
|
+
t.rcov_opts << '--sort' << 'coverage' << '--sort-reverse'
|
79
|
+
rescue LoadError
|
80
|
+
# rcov not installed
|
81
|
+
end
|
82
|
+
end
|
83
|
+
rescue LoadError
|
84
|
+
# rspec not installed
|
85
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# Dependencies are generated using a strict version,
|
2
|
+
# Don't forget to edit the dependency versions when upgrading.
|
3
|
+
|
4
|
+
merb_gems_version = "<%= merb_gems_version %>"
|
5
|
+
dm_gems_version = "<%= dm_gems_version %>"
|
6
|
+
do_gems_version = "<%= do_gems_version %>"
|
7
|
+
|
8
|
+
# If you did disable json for Merb, comment out this line.
|
9
|
+
# Don't use json gem version lower than 1.1.7! Older version have a security bug
|
10
|
+
|
11
|
+
gem "json_pure", ">= 1.1.7", :require => "json"
|
12
|
+
|
13
|
+
# For more information about each component,
|
14
|
+
# please read http://wiki.merbivore.com/faqs/merb_components
|
15
|
+
|
16
|
+
gem "merb-core", merb_gems_version
|
17
|
+
gem "merb-action-args", merb_gems_version
|
18
|
+
gem "merb-assets", merb_gems_version
|
19
|
+
gem "merb-helpers", merb_gems_version
|
20
|
+
gem "merb-mailer", merb_gems_version
|
21
|
+
gem "merb-slices", merb_gems_version
|
22
|
+
gem "merb-auth-core", merb_gems_version
|
23
|
+
gem "merb-auth-more", merb_gems_version
|
24
|
+
gem "merb-auth-slice-password", merb_gems_version
|
25
|
+
gem "merb-param-protection", merb_gems_version
|
26
|
+
gem "merb-exceptions", merb_gems_version
|
27
|
+
gem "merb-gen", merb_gems_version
|
28
|
+
|
29
|
+
gem("merb-cache", merb_gems_version) do
|
30
|
+
Merb::Cache.setup do
|
31
|
+
register(Merb::Cache::FileStore) unless Merb.cache
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
gem "data_objects", do_gems_version
|
36
|
+
gem "do_sqlite3", do_gems_version # If using another database, replace this
|
37
|
+
gem "dm-core", dm_gems_version
|
38
|
+
gem "dm-aggregates", dm_gems_version
|
39
|
+
gem "dm-migrations", dm_gems_version
|
40
|
+
gem "dm-timestamps", dm_gems_version
|
41
|
+
gem "dm-types", dm_gems_version
|
42
|
+
gem "dm-validations", dm_gems_version
|
43
|
+
gem "dm-serializer", dm_gems_version
|
44
|
+
gem "dm-constraints", dm_gems_version
|
45
|
+
|
46
|
+
gem "merb_datamapper", merb_gems_version
|
47
|
+
<%= gems_for_template_engine(template_engine) %>
|
48
|
+
<%= gems_for_testing_framework(testing_framework) %>
|
@@ -54,7 +54,7 @@ class Autotest::MerbRspec < Autotest
|
|
54
54
|
|
55
55
|
# Changes to a view cause its spec to be run
|
56
56
|
add_mapping %r%^app/views/(.*)/% do |_, m|
|
57
|
-
spec_for(m[1], '
|
57
|
+
spec_for(m[1], 'request')
|
58
58
|
end
|
59
59
|
|
60
60
|
# Changes to a controller result in its corresponding spec being run. If
|
@@ -62,15 +62,15 @@ class Autotest::MerbRspec < Autotest
|
|
62
62
|
# controller specs are run.
|
63
63
|
add_mapping %r%^app/controllers/(.*)\.rb$% do |_, m|
|
64
64
|
if ["application", "exception"].include?(m[1])
|
65
|
-
files_matching %r%^spec/
|
65
|
+
files_matching %r%^spec/requests/.*_spec\.rb$%
|
66
66
|
else
|
67
|
-
spec_for(m[1], '
|
67
|
+
spec_for(m[1], 'request')
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
71
|
# If a change is made to the router, run controller, view and helper specs
|
72
72
|
add_mapping %r%^config/router.rb$% do
|
73
|
-
files_matching %r%^spec/(controllers|
|
73
|
+
files_matching %r%^spec/(views|controllers|helpers|requests)/.*_spec\.rb$%
|
74
74
|
end
|
75
75
|
|
76
76
|
# If any of the major files governing the environment are altered, run
|
@@ -157,9 +157,9 @@ private
|
|
157
157
|
# String
|
158
158
|
#
|
159
159
|
# ==== Example
|
160
|
-
# > spec_for('post', :
|
161
|
-
# => "spec/
|
160
|
+
# > spec_for('post', :model')
|
161
|
+
# => "spec/models/post_spec.rb"
|
162
162
|
def spec_for(match, kind)
|
163
|
-
|
163
|
+
files_matching %r%^spec/#{kind}s/#{match}(/.*)?_spec.rb$%
|
164
164
|
end
|
165
165
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
begin
|
2
|
+
# Try to require the preresolved locked set of gems.
|
3
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
4
|
+
rescue LoadError
|
5
|
+
# Fall back on doing an unlocked resolve at runtime.
|
6
|
+
require "rubygems"
|
7
|
+
require "bundler"
|
8
|
+
Bundler.setup
|
9
|
+
end
|
10
|
+
|
11
|
+
require 'merb-core'
|
12
|
+
|
13
|
+
Merb::Config.setup(
|
14
|
+
:merb_root => File.expand_path(File.dirname(__FILE__)),
|
15
|
+
:environment => ENV['RACK_ENV']
|
16
|
+
)
|
17
|
+
|
18
|
+
Merb.environment = Merb::Config[:environment]
|
19
|
+
Merb.root = Merb::Config[:merb_root]
|
20
|
+
|
21
|
+
Merb::BootLoader.run
|
22
|
+
|
23
|
+
run Merb::Rack::Application.new
|
@@ -1,2 +1,2 @@
|
|
1
1
|
--format specdoc
|
2
|
-
--colour
|
2
|
+
--colour
|
@@ -1,13 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
|
-
require "merb-core"
|
10
11
|
require "spec" # Satisfies Autotest and anyone else not using the Rake tasks
|
12
|
+
require "merb-core"
|
11
13
|
|
12
14
|
# this loads all plugins required in your init file so don't add them
|
13
15
|
# here again, Merb will do it for you
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
11
|
require "merb-core"
|
@@ -16,4 +18,4 @@ Merb.start :environment => (ENV['MERB_ENV'] || 'test'),
|
|
16
18
|
class Test::Unit::TestCase
|
17
19
|
include Merb::Test::RequestHelper
|
18
20
|
# Add more helper methods to be used by all tests here...
|
19
|
-
end
|
21
|
+
end
|
@@ -33,13 +33,6 @@
|
|
33
33
|
<%= "# " unless template_engine == :erb %>use_template_engine :erb
|
34
34
|
<%= "# " unless template_engine == :haml %>use_template_engine :haml
|
35
35
|
|
36
|
-
# If you need to use dependency immediately in this file you must add :immediate => true
|
37
|
-
# to dependency definition:
|
38
|
-
# dependency "merb-slices", :immediate => true
|
39
|
-
#
|
40
|
-
# Specify a specific version of a dependency
|
41
|
-
# dependency "RedCloth", "> 3.0"
|
42
|
-
|
43
36
|
Merb::Config.use { |c|
|
44
37
|
c[:framework] = { :public => [Merb.root / "public", nil] }
|
45
38
|
c[:session_store] = 'none'
|
@@ -63,4 +56,4 @@ class <%= class_name %> < Merb::Controller
|
|
63
56
|
def index
|
64
57
|
"Hi, I am 'very flat' Merb application. I have everything in one single file and well suited for dynamic stub pages."
|
65
58
|
end
|
66
|
-
end
|
59
|
+
end
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
11
|
require "spec"
|
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
#
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
begin
|
2
|
+
# Just in case the bundle was locked
|
3
|
+
# This shouldn't happen in a dev environment but lets be safe
|
4
|
+
require File.expand_path('../.bundle/environment', __FILE__)
|
5
|
+
rescue LoadError
|
6
|
+
require 'rubygems'
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
7
9
|
end
|
8
10
|
|
9
11
|
require "merb-core"
|
@@ -16,4 +18,4 @@ Merb.start :environment => (ENV['MERB_ENV'] || 'test'),
|
|
16
18
|
class Test::Unit::TestCase
|
17
19
|
include Merb::Test::RequestHelper
|
18
20
|
# Add more helper methods to be used by all tests here...
|
19
|
-
end
|
21
|
+
end
|
@@ -13,5 +13,4 @@ RewriteRule ^([^.]+)$ $1.html [QSA]
|
|
13
13
|
RewriteCond %{REQUEST_FILENAME} !-f
|
14
14
|
RewriteRule ^(.*)$ merb.fcgi [QSA,L]
|
15
15
|
|
16
|
-
|
17
|
-
ErrorDocument 500 "<h2>Application Error</h2>Merb could not be reached"
|
16
|
+
ErrorDocument 500 "<h2>Application Error</h2>Merb could not be reached"
|
@@ -1,11 +1,17 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
|
2
|
+
begin
|
3
|
+
# Load the bundler environment from #{Merb.root}/gems/environment.rb
|
4
|
+
require File.join(File.dirname(__FILE__), "..", "gems", "environment")
|
5
|
+
rescue LoadError
|
6
|
+
# Default to using system rubygems if there's no bundle detected
|
7
|
+
require "rubygems"
|
8
|
+
end
|
9
|
+
|
4
10
|
require 'merb-core'
|
5
11
|
|
6
12
|
# this is Merb.root, change this if you have some funky setup.
|
7
13
|
merb_root = File.expand_path(File.dirname(__FILE__) / '../')
|
8
|
-
|
14
|
+
|
9
15
|
# If the fcgi process runs as apache, make sure
|
10
16
|
# we have an inlinedir set for Rubyinline action-args to work
|
11
17
|
unless ENV["INLINEDIR"] || ENV["HOME"]
|
@@ -19,4 +25,4 @@ end
|
|
19
25
|
# start merb with the fcgi adapter, add options or change the log dir here
|
20
26
|
Merb.start(:adapter => 'fcgi',
|
21
27
|
:merb_root => merb_root,
|
22
|
-
:log_file => merb_root /'log'/'merb.log')
|
28
|
+
:log_file => merb_root / 'log' / 'merb.log')
|
@@ -8,6 +8,64 @@ module Merb
|
|
8
8
|
super
|
9
9
|
end
|
10
10
|
|
11
|
+
# Helper to get Merb version
|
12
|
+
#
|
13
|
+
# ==== Returns
|
14
|
+
# String:: Merb version
|
15
|
+
def merb_gems_version
|
16
|
+
Merb::VERSION
|
17
|
+
end
|
18
|
+
|
19
|
+
# ORM gem dependencies
|
20
|
+
#
|
21
|
+
# Adds ORM plugin dependency 'merb_#{orm}' if we use any ORM.
|
22
|
+
#
|
23
|
+
# ==== Params
|
24
|
+
# orm<Symbol>:: ORM to use
|
25
|
+
#
|
26
|
+
# ==== Returns
|
27
|
+
# String:: Gem dependencies
|
28
|
+
def gems_for_orm(orm)
|
29
|
+
orm.to_sym == :none ? '' : %Q{gem "merb_#{orm}"}
|
30
|
+
end
|
31
|
+
|
32
|
+
# Template enging gem dependencies
|
33
|
+
#
|
34
|
+
# When using something else than erb we add merb plugin
|
35
|
+
# dependency for the template engine.
|
36
|
+
#
|
37
|
+
# ==== Params
|
38
|
+
# template_engine<Symbol>:: Template engine to use
|
39
|
+
#
|
40
|
+
# ==== Returns
|
41
|
+
# String:: Gem dependencies
|
42
|
+
def gems_for_template_engine(template_engine)
|
43
|
+
gems = ''
|
44
|
+
if template_engine != :erb
|
45
|
+
if template_engine.in?(:haml, :builder)
|
46
|
+
template_engine_plugin = "merb-#{template_engine}"
|
47
|
+
else
|
48
|
+
template_engine_plugin = "merb_#{template_engine}"
|
49
|
+
end
|
50
|
+
gems = %Q{gem "#{template_engine_plugin}"}
|
51
|
+
end
|
52
|
+
gems
|
53
|
+
end
|
54
|
+
|
55
|
+
# Testing framework gem dependencies
|
56
|
+
#
|
57
|
+
# If we use any other test framework than RSpec we must add dependency
|
58
|
+
# to the Gemfile. Merb depends on the RSpec so it's default dependency.
|
59
|
+
#
|
60
|
+
# ==== Params
|
61
|
+
# test_framework<Symbol>:: Testing framework to use
|
62
|
+
#
|
63
|
+
# ==== Returns
|
64
|
+
# String:: Gem dependencies
|
65
|
+
def gems_for_testing_framework(testing_framework)
|
66
|
+
testing_framework == :rspec ? '' : %Q{gem "#{testing_framework}", :group => :test}
|
67
|
+
end
|
68
|
+
|
11
69
|
end
|
12
70
|
end
|
13
71
|
end
|
data/lib/merb-gen/generator.rb
CHANGED
@@ -58,7 +58,7 @@ module Merb
|
|
58
58
|
modules.each_with_index do |mod, i|
|
59
59
|
concat((" " * (indent + i)) + "module #{mod}\n", block.binding)
|
60
60
|
end
|
61
|
-
text = text.
|
61
|
+
text = Array(text).map{ |line| (" " * modules.size) + line }.join
|
62
62
|
concat(text, block.binding)
|
63
63
|
modules.reverse.each_with_index do |mod, i|
|
64
64
|
concat((" " * (indent + modules.size - i - 1)) + "end # #{mod}\n", block.binding)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Merb
|
2
|
+
module Generators
|
3
|
+
|
4
|
+
VERSION = '1.1.0.pre'.freeze
|
5
|
+
|
6
|
+
# Duplicated here (originally in merb_datamapper)
|
7
|
+
# This is currently the easiest way to get at the
|
8
|
+
# datamapper version requirements, and still seems
|
9
|
+
# better than specifying the datamapper version in
|
10
|
+
# merb-core itself.
|
11
|
+
DM_VERSION_REQUIREMENT = '~> 0.10'.freeze
|
12
|
+
|
13
|
+
# Necessary to supply builtin support for do_sqlite3
|
14
|
+
DO_VERSION_REQUIREMENT = '~> 0.10'.freeze
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
data/lib/merb-gen.rb
CHANGED
@@ -1,34 +1,36 @@
|
|
1
|
-
require 'rubygems'
|
2
1
|
require 'merb-core'
|
2
|
+
|
3
3
|
require 'digest/sha1'
|
4
|
-
gem 'templater', '>= 0.3.2'
|
5
4
|
require 'templater'
|
6
5
|
|
7
|
-
|
6
|
+
require 'merb-gen/templater'
|
7
|
+
require 'merb-gen/generator'
|
8
|
+
require 'merb-gen/named_generator'
|
9
|
+
require 'merb-gen/namespaced_generator'
|
10
|
+
require 'merb-gen/app_generator'
|
11
|
+
|
12
|
+
# TODO Look at how templater handles generators that don't reside
|
13
|
+
# in the toplevel rubygems 'namespace'
|
8
14
|
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require
|
12
|
-
require
|
13
|
-
require
|
14
|
-
require
|
15
|
-
require
|
16
|
-
require
|
17
|
-
require
|
18
|
-
require
|
19
|
-
require
|
20
|
-
require
|
21
|
-
require
|
22
|
-
require
|
23
|
-
require
|
24
|
-
require
|
25
|
-
require path / "generators" / "resource_controller"
|
26
|
-
require path / "generators" / "resource"
|
27
|
-
require path / "generators" / "layout"
|
28
|
-
require path / "generators" / "thor"
|
15
|
+
require File.expand_path('../generators/merb/merb_stack', __FILE__)
|
16
|
+
require File.expand_path('../generators/merb/merb_core', __FILE__)
|
17
|
+
require File.expand_path('../generators/merb/merb_flat', __FILE__)
|
18
|
+
require File.expand_path('../generators/merb/merb_very_flat', __FILE__)
|
19
|
+
require File.expand_path('../generators/merb_plugin', __FILE__)
|
20
|
+
require File.expand_path('../generators/controller', __FILE__)
|
21
|
+
require File.expand_path('../generators/helper', __FILE__)
|
22
|
+
require File.expand_path('../generators/part_controller', __FILE__)
|
23
|
+
require File.expand_path('../generators/migration', __FILE__)
|
24
|
+
require File.expand_path('../generators/session_migration', __FILE__)
|
25
|
+
require File.expand_path('../generators/model', __FILE__)
|
26
|
+
require File.expand_path('../generators/resource_controller', __FILE__)
|
27
|
+
require File.expand_path('../generators/resource', __FILE__)
|
28
|
+
require File.expand_path('../generators/layout', __FILE__)
|
29
|
+
require File.expand_path('../generators/passenger', __FILE__)
|
30
|
+
require File.expand_path('../generators/fcgi', __FILE__)
|
29
31
|
|
30
|
-
Templater::Discovery.discover!(
|
32
|
+
Templater::Discovery.discover!('merb-gen')
|
31
33
|
|
32
34
|
Merb.generators.each do |file|
|
33
35
|
require file
|
34
|
-
end
|
36
|
+
end
|
data/spec/controller_spec.rb
CHANGED
data/spec/fcgi_spec.rb
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Merb::Generators::FcgiGenerator do
|
4
|
+
|
5
|
+
describe "templates" do
|
6
|
+
before(:each) do
|
7
|
+
@generator = Merb::Generators::FcgiGenerator.new('/tmp', {})
|
8
|
+
end
|
9
|
+
|
10
|
+
it "should create a .htaccess file within public/" do
|
11
|
+
@generator.should create('/tmp/public/.htaccess')
|
12
|
+
end
|
13
|
+
|
14
|
+
it "should create a merb.fcgi file within public/" do
|
15
|
+
@generator.should create('/tmp/public/.htaccess')
|
16
|
+
end
|
17
|
+
|
18
|
+
it "should render templates successfully" do
|
19
|
+
lambda { @generator.render! }.should_not raise_error
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
data/spec/generator_spec.rb
CHANGED
data/spec/layout_spec.rb
CHANGED