merb-gen 0.9.9 → 0.9.10
Sign up to get free protection for your applications and to get access to all the features.
- data/Rakefile +1 -1
- data/lib/generators/merb/merb_stack.rb +8 -0
- data/lib/generators/resource.rb +1 -1
- data/lib/generators/resource_controller.rb +12 -0
- data/lib/generators/templates/application/common/merb.thor +77 -32
- data/lib/generators/templates/application/merb_core/app/controllers/exceptions.rb +1 -1
- data/lib/generators/templates/application/merb_core/config/init.rb +19 -183
- data/lib/generators/templates/application/merb_flat/config/init.rb +10 -112
- data/lib/generators/templates/application/merb_plugin/LICENSE +1 -1
- data/lib/generators/templates/application/merb_stack/app/controllers/exceptions.rb +1 -1
- data/lib/generators/templates/application/merb_stack/app/models/user.rb +1 -1
- data/lib/generators/templates/application/merb_stack/config/dependencies.rb +22 -14
- data/lib/generators/templates/application/merb_stack/config/init.rb +3 -3
- data/lib/generators/templates/application/merb_stack/merb/merb-auth/setup.rb +1 -1
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/edit.html.erb +2 -1
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/index.html.erb +2 -1
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/new.html.erb +2 -1
- data/lib/generators/templates/component/resource_controller/app/views/%file_name%/show.html.erb +2 -1
- data/lib/generators/templates/component/resource_controller/spec/requests/%file_name%_spec.rb +73 -4
- metadata +4 -6
- data/lib/generators/templates/application/merb_core/app/views/exceptions/internal_server_error.html.erb +0 -216
- data/lib/generators/templates/application/merb_stack/app/views/exceptions/internal_server_error.html.erb +0 -216
data/Rakefile
CHANGED
@@ -40,7 +40,7 @@ spec = Gem::Specification.new do |s|
|
|
40
40
|
s.bindir = "bin"
|
41
41
|
s.executables = %w( merb-gen )
|
42
42
|
|
43
|
-
s.add_dependency "merb-core", ">=
|
43
|
+
s.add_dependency "merb-core", ">= #{Merb::VERSION}"
|
44
44
|
s.add_dependency "templater", ">= 0.3.3"
|
45
45
|
|
46
46
|
s.require_path = 'lib'
|
@@ -90,6 +90,14 @@ module Merb
|
|
90
90
|
# ==== Layout specific things
|
91
91
|
#
|
92
92
|
|
93
|
+
def merb_gems_version
|
94
|
+
"0.9.10"
|
95
|
+
end
|
96
|
+
|
97
|
+
def dm_gems_version
|
98
|
+
"0.9.6"
|
99
|
+
end
|
100
|
+
|
93
101
|
# empty array means all files are considered to be just
|
94
102
|
# files, not templates
|
95
103
|
glob! "app"
|
data/lib/generators/resource.rb
CHANGED
@@ -29,7 +29,7 @@ module Merb::Generators
|
|
29
29
|
end
|
30
30
|
|
31
31
|
def after_generation
|
32
|
-
STDOUT << message("
|
32
|
+
STDOUT << message("resources :#{model_name.pluralize.snake_case} route added to config/router.rb")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -30,6 +30,8 @@ module Merb::Generators
|
|
30
30
|
template :controller_none, :orm => :none do |template|
|
31
31
|
template.source = "app/controllers/%file_name%.rb"
|
32
32
|
template.destination = "app/controllers" / base_path / "#{file_name}.rb"
|
33
|
+
|
34
|
+
self.add_resource_route(self.plural_model)
|
33
35
|
end
|
34
36
|
|
35
37
|
[:index, :show, :edit, :new].each do |view|
|
@@ -49,6 +51,16 @@ module Merb::Generators
|
|
49
51
|
template.destination = "test/controllers" / base_path / "#{file_name}_test.rb"
|
50
52
|
end
|
51
53
|
|
54
|
+
def add_resource_route(plural_resource)
|
55
|
+
router_path = Merb.root + "/config/router.rb"
|
56
|
+
sentinel = "Merb::Router.prepare do"
|
57
|
+
to_inject = "resources :#{plural_resource}"
|
58
|
+
if File.exist?(router_path)
|
59
|
+
content = File.read(router_path).gsub(/(#{Regexp.escape(sentinel)})/mi){|match| "#{match}\n #{to_inject}"}
|
60
|
+
File.open(router_path, 'wb') { |file| file.write(content) }
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
52
64
|
def model_class_name
|
53
65
|
class_name.singularize
|
54
66
|
end
|
@@ -5,7 +5,7 @@ require 'fileutils'
|
|
5
5
|
require 'yaml'
|
6
6
|
|
7
7
|
# Important - don't change this line or its position
|
8
|
-
MERB_THOR_VERSION = '0.0.
|
8
|
+
MERB_THOR_VERSION = '0.0.52'
|
9
9
|
|
10
10
|
##############################################################################
|
11
11
|
|
@@ -198,7 +198,7 @@ module GemManagement
|
|
198
198
|
options[:version] = Gem::Requirement.new ["= #{options[:version]}"]
|
199
199
|
end
|
200
200
|
update_source_index(options[:install_dir]) if options[:install_dir]
|
201
|
-
Gem::Uninstaller.new(gem, options).uninstall
|
201
|
+
Gem::Uninstaller.new(gem, options).uninstall rescue nil
|
202
202
|
end
|
203
203
|
|
204
204
|
def clobber(source_dir)
|
@@ -260,7 +260,7 @@ module GemManagement
|
|
260
260
|
gemspecs = ::Gem.source_index.search(dep)
|
261
261
|
local = gemspecs.reverse.find { |s| s.loaded_from.index(gem_dir) == 0 }
|
262
262
|
if local
|
263
|
-
local_specs
|
263
|
+
local_specs << local
|
264
264
|
elsif gemspecs.last
|
265
265
|
system_specs << gemspecs.last
|
266
266
|
else
|
@@ -268,6 +268,15 @@ module GemManagement
|
|
268
268
|
end
|
269
269
|
end
|
270
270
|
::Gem.clear_paths
|
271
|
+
else
|
272
|
+
dependencies.each do |dep|
|
273
|
+
gemspecs = ::Gem.source_index.search(dep)
|
274
|
+
if gemspecs.last
|
275
|
+
system_specs << gemspecs.last
|
276
|
+
else
|
277
|
+
missing_deps << dep
|
278
|
+
end
|
279
|
+
end
|
271
280
|
end
|
272
281
|
[system_specs, local_specs, missing_deps]
|
273
282
|
end
|
@@ -316,9 +325,12 @@ end
|
|
316
325
|
if File.directory?(gems_dir = File.join(Dir.pwd, 'gems')) ||
|
317
326
|
File.directory?(gems_dir = File.join(File.dirname(__FILE__), '..', 'gems'))
|
318
327
|
$BUNDLE = true; Gem.clear_paths; Gem.path.unshift(gems_dir)
|
328
|
+
if (local_gem = Dir[File.join(gems_dir, "specifications", "#{spec.name}-*.gemspec")].last)
|
329
|
+
version = File.basename(local_gem)[/-([\\.\\d]+)\\.gemspec$/, 1]
|
330
|
+
end
|
319
331
|
end
|
320
332
|
|
321
|
-
version
|
333
|
+
version ||= "#{Gem::Requirement.default}"
|
322
334
|
|
323
335
|
if ARGV.first =~ /^_(.*)_$/ and Gem::Version.correct? $1 then
|
324
336
|
version = $1
|
@@ -415,17 +427,12 @@ end
|
|
415
427
|
|
416
428
|
module MerbThorHelper
|
417
429
|
|
418
|
-
attr_accessor :include_dependencies
|
430
|
+
attr_accessor :include_dependencies, :force_gem_dir
|
419
431
|
|
420
432
|
def self.included(base)
|
421
433
|
base.send(:include, ColorfulMessages)
|
422
434
|
base.extend ColorfulMessages
|
423
435
|
end
|
424
|
-
|
425
|
-
def install_dependency(dependency, opts = {})
|
426
|
-
opts[:version] ||= dependency.version_requirements.to_s
|
427
|
-
Merb::Gem.install(dependency.name, default_install_options.merge(opts))
|
428
|
-
end
|
429
436
|
|
430
437
|
def source_manager
|
431
438
|
@_source_manager ||= SourceManager.new(source_dir)
|
@@ -467,6 +474,11 @@ module MerbThorHelper
|
|
467
474
|
end
|
468
475
|
end
|
469
476
|
end
|
477
|
+
|
478
|
+
def install_dependency(dependency, opts = {})
|
479
|
+
opts[:version] ||= dependency.version_requirements.to_s
|
480
|
+
Merb::Gem.install(dependency.name, default_install_options.merge(opts))
|
481
|
+
end
|
470
482
|
|
471
483
|
def install_dependency_from_source(dependency, opts = {})
|
472
484
|
matches = Dir[File.join(source_dir, "**", dependency.name, "{Rakefile,Thorfile}")]
|
@@ -506,7 +518,7 @@ module MerbThorHelper
|
|
506
518
|
note 'Uninstalling existing local gems:'
|
507
519
|
local.each { |gemspec| note "Uninstalled #{gemspec.name}" }
|
508
520
|
else
|
509
|
-
message 'Uninstalling existing local gems:'
|
521
|
+
message 'Uninstalling existing local gems:' if local.size > 1
|
510
522
|
local.each do |gemspec|
|
511
523
|
Merb::Gem.uninstall(gemspec.name, default_uninstall_options)
|
512
524
|
end
|
@@ -571,6 +583,7 @@ module MerbThorHelper
|
|
571
583
|
|
572
584
|
# If a local ./gems dir is found, return it.
|
573
585
|
def gem_dir
|
586
|
+
return force_gem_dir if force_gem_dir
|
574
587
|
if File.directory?(dir = default_gem_dir)
|
575
588
|
dir
|
576
589
|
end
|
@@ -605,7 +618,7 @@ module MerbThorHelper
|
|
605
618
|
ENV['THOR_SUDO'] ||= "sudo"
|
606
619
|
sudo = Gem.win_platform? ? "" : ENV['THOR_SUDO']
|
607
620
|
end
|
608
|
-
|
621
|
+
|
609
622
|
def local_gemspecs(directory = gem_dir)
|
610
623
|
if File.directory?(specs_dir = File.join(directory, 'specifications'))
|
611
624
|
Dir[File.join(specs_dir, '*.gemspec')].map do |gemspec_path|
|
@@ -893,10 +906,10 @@ module Merb
|
|
893
906
|
if method = strategy?(strategy)
|
894
907
|
# Clobber existing local dependencies
|
895
908
|
clobber_dependencies!
|
896
|
-
|
909
|
+
|
897
910
|
# Run the chosen strategy - collect files installed from stable gems
|
898
911
|
installed_from_stable = send(method, deps).map { |d| d.name }
|
899
|
-
|
912
|
+
|
900
913
|
# Sleep a bit otherwise the following steps won't see the new files
|
901
914
|
sleep(deps.length) if deps.length > 0
|
902
915
|
|
@@ -910,16 +923,10 @@ module Merb
|
|
910
923
|
end
|
911
924
|
end
|
912
925
|
|
913
|
-
# Ask for system installation of minigem - needs sudo...
|
914
|
-
if deps.find { |d| d.name == 'minigems' }
|
915
|
-
info "Installing minigems.rb on your system..."
|
916
|
-
`#{sudo} minigem install`
|
917
|
-
end
|
918
|
-
|
919
926
|
# Add local binaries for the installed framework dependencies
|
920
927
|
comps = Merb::Stack.all_components & deps.map { |d| d.name }
|
921
928
|
comps << { :no_minigems => 'merb-gen' }
|
922
|
-
ensure_bin_wrapper_for(*comps)
|
929
|
+
ensure_bin_wrapper_for(*comps)
|
923
930
|
return true
|
924
931
|
end
|
925
932
|
false
|
@@ -1087,9 +1094,6 @@ module Merb
|
|
1087
1094
|
rescue => e
|
1088
1095
|
error "Couldn't extract dependencies from application!"
|
1089
1096
|
error e.message
|
1090
|
-
|
1091
|
-
p e.backtrace
|
1092
|
-
|
1093
1097
|
puts "Make sure you're executing the task from your app (--merb-root), or"
|
1094
1098
|
puts "specify a config option (--config or --config-file=YAML_FILE)"
|
1095
1099
|
return []
|
@@ -1119,6 +1123,7 @@ module Merb
|
|
1119
1123
|
# regardless of actual application dependency settings.
|
1120
1124
|
|
1121
1125
|
DM_STACK = %w[
|
1126
|
+
extlib
|
1122
1127
|
dm-core
|
1123
1128
|
dm-aggregates
|
1124
1129
|
dm-migrations
|
@@ -1127,9 +1132,8 @@ module Merb
|
|
1127
1132
|
dm-validations
|
1128
1133
|
]
|
1129
1134
|
|
1130
|
-
MERB_STACK = %w[
|
1131
|
-
|
1132
|
-
|
1135
|
+
MERB_STACK = %w[
|
1136
|
+
extlib
|
1133
1137
|
merb-core
|
1134
1138
|
merb-action-args
|
1135
1139
|
merb-assets
|
@@ -1140,9 +1144,8 @@ module Merb
|
|
1140
1144
|
merb-auth
|
1141
1145
|
] + DM_STACK
|
1142
1146
|
|
1143
|
-
MERB_BASICS = %w[
|
1144
|
-
|
1145
|
-
|
1147
|
+
MERB_BASICS = %w[
|
1148
|
+
extlib
|
1146
1149
|
merb-core
|
1147
1150
|
merb-action-args
|
1148
1151
|
merb-assets
|
@@ -1281,6 +1284,7 @@ module Merb
|
|
1281
1284
|
# See also: Merb::Dependencies#uninstall
|
1282
1285
|
#
|
1283
1286
|
# Examples:
|
1287
|
+
#
|
1284
1288
|
# merb:stack:uninstall # uninstall the default merb stack
|
1285
1289
|
# merb:stack:uninstall merb-more # uninstall merb-more
|
1286
1290
|
# merb:stack:uninstall merb-core thor merb-slices # uninstall the specified gems
|
@@ -1294,6 +1298,48 @@ module Merb
|
|
1294
1298
|
clobber_dependencies!
|
1295
1299
|
end
|
1296
1300
|
|
1301
|
+
# Install or uninstall minigems from the system.
|
1302
|
+
#
|
1303
|
+
# Due to the specific nature of MiniGems it can only be installed system-wide.
|
1304
|
+
#
|
1305
|
+
# Examples:
|
1306
|
+
#
|
1307
|
+
# merb:stack:minigems install # install minigems
|
1308
|
+
# merb:stack:minigems uninstall # uninstall minigems
|
1309
|
+
|
1310
|
+
desc 'minigems (install|uninstall)', 'Install or uninstall minigems (needs sudo privileges)'
|
1311
|
+
def minigems(action)
|
1312
|
+
case action
|
1313
|
+
when 'install'
|
1314
|
+
Kernel.system "#{sudo} thor merb:stack:install_minigems"
|
1315
|
+
when 'uninstall'
|
1316
|
+
Kernel.system "#{sudo} thor merb:stack:uninstall_minigems"
|
1317
|
+
else
|
1318
|
+
error "Invalid command: merb:stack:minigems #{action}"
|
1319
|
+
end
|
1320
|
+
end
|
1321
|
+
|
1322
|
+
# hidden minigems install task
|
1323
|
+
def install_minigems
|
1324
|
+
message "Installing MiniGems"
|
1325
|
+
mngr = self.dependency_manager
|
1326
|
+
deps = gather_dependencies('minigems')
|
1327
|
+
mngr.system, mngr.local, mngr.missing = Merb::Gem.partition_dependencies(deps, gem_dir)
|
1328
|
+
mngr.force_gem_dir = ::Gem.dir
|
1329
|
+
mngr.install_dependencies(strategy, deps)
|
1330
|
+
Kernel.system "#{sudo} minigem install"
|
1331
|
+
end
|
1332
|
+
|
1333
|
+
# hidden minigems uninstall task
|
1334
|
+
def uninstall_minigems
|
1335
|
+
message "Uninstalling MiniGems"
|
1336
|
+
Kernel.system "#{sudo} minigem uninstall"
|
1337
|
+
deps = gather_dependencies('minigems')
|
1338
|
+
self.system, self.local, self.missing = Merb::Gem.partition_dependencies(deps, gem_dir)
|
1339
|
+
# Clobber existing local dependencies - based on self.local
|
1340
|
+
clobber_dependencies!
|
1341
|
+
end
|
1342
|
+
|
1297
1343
|
protected
|
1298
1344
|
|
1299
1345
|
def gather_dependencies(comps = [])
|
@@ -1900,8 +1946,7 @@ module Merb
|
|
1900
1946
|
'sequel' => "git://github.com/wayneeseguin/sequel.git",
|
1901
1947
|
'do' => "git://github.com/sam/do.git",
|
1902
1948
|
'thor' => "git://github.com/wycats/thor.git",
|
1903
|
-
'rake' => "git://github.com/jimweirich/rake.git"
|
1904
|
-
'minigems' => "git://github.com/fabien/minigems.git"
|
1949
|
+
'rake' => "git://github.com/jimweirich/rake.git"
|
1905
1950
|
}
|
1906
1951
|
end
|
1907
1952
|
|
@@ -1,189 +1,25 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
#
|
4
|
-
# 1. Load paths.
|
5
|
-
# 2. Dependencies configuration.
|
6
|
-
# 3. Libraries (ORM, testing tool, etc) you use.
|
7
|
-
# 4. Application-specific configuration.
|
8
|
-
|
9
|
-
#
|
10
|
-
# ==== Set up load paths
|
11
|
-
#
|
12
|
-
|
13
|
-
# Add the app's "gems" directory to the gem load path.
|
14
|
-
# Note that the gems directory must mirror the structure RubyGems uses for
|
15
|
-
# directories under which gems are kept.
|
16
|
-
#
|
17
|
-
# To conveniently set it up, use gem install -i <merb_app_root/gems>
|
18
|
-
# when installing gems. This will set up the structure under /gems
|
19
|
-
# automagically.
|
20
|
-
#
|
21
|
-
# An example:
|
22
|
-
#
|
23
|
-
# You want to bundle ActiveRecord and ActiveSupport with your Merb
|
24
|
-
# application to be deployment environment independent. To do so,
|
25
|
-
# install gems into merb_app_root/gems directory like this:
|
26
|
-
#
|
27
|
-
# gem install -i merb_app_root/gems activesupport-post-2.0.2.gem activerecord-post-2.0.2.gem
|
28
|
-
#
|
29
|
-
# Since RubyGems will search merb_app_root/gems for dependencies, order
|
30
|
-
# in the statement above is important: we need to install ActiveSupport which
|
31
|
-
# ActiveRecord depends on first.
|
32
|
-
#
|
33
|
-
# Remember that bundling of dependencies as gems with your application
|
34
|
-
# makes it independent of the environment it runs in and is a very
|
35
|
-
# good, encouraged practice to follow.
|
36
|
-
|
37
|
-
# If you want modules and classes from libraries organized like
|
38
|
-
# merbapp/lib/magicwand/lib/magicwand.rb to autoload,
|
39
|
-
# uncomment this.
|
40
|
-
# Merb.push_path(:lib, Merb.root / "lib") # uses **/*.rb as path glob.
|
41
|
-
|
42
|
-
# ==== Dependencies
|
43
|
-
|
44
|
-
# These are a few, but not all, of the standard merb-more dependencies:
|
45
|
-
#
|
46
|
-
# dependency "merb-action-args" # Provides support for querystring arguments to be passed in to controller actions
|
47
|
-
# dependency "merb-assets" # Provides link_to, asset_path, auto_link, image_tag methods (and lots more)
|
48
|
-
# dependency "merb-helpers" # Provides the form, date/time, and other helpers
|
49
|
-
# dependency "merb-cache" # Provides your application with caching functions
|
50
|
-
# dependency "merb-haml" # Adds rake tasks and the haml generators to your merb app
|
51
|
-
# dependency "merb-jquery" # Provides a #jquery method to insert jQuery code in to a content block
|
52
|
-
# dependency "merb-mailer" # Integrates mail support via Merb Mailer
|
53
|
-
|
54
|
-
# These are a few, but not all, of the merb-plugin dependencies:
|
55
|
-
#
|
56
|
-
# dependency "merb_param_protection" # Lets you have better control over your query string params and param logging
|
57
|
-
# dependency "merb_stories" # Provides rspec helper methods for your application
|
58
|
-
|
59
|
-
# Miscellaneous dependencies:
|
60
|
-
#
|
61
|
-
# Specify more than one dependency at a time with the #dependencies method:
|
62
|
-
# dependencies "RedCloth", "BlueCloth"
|
63
|
-
|
1
|
+
# Go to http://wiki.merbivore.com/pages/init-rb
|
2
|
+
|
64
3
|
# Specify a specific version of a dependency
|
65
4
|
# dependency "RedCloth", "> 3.0"
|
66
5
|
|
67
|
-
#
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
Merb::BootLoader.after_app_loads do
|
72
|
-
# For example, the magic_admin gem uses the app's model classes. This requires that the models be
|
73
|
-
# loaded already. So, we can put the magic_admin dependency here:
|
74
|
-
# dependency "magic_admin"
|
75
|
-
end
|
76
|
-
|
77
|
-
#
|
78
|
-
# ==== Set up your ORM of choice
|
79
|
-
#
|
80
|
-
|
81
|
-
# Merb doesn't come with database support by default. You need
|
82
|
-
# an ORM plugin. Install one, and uncomment one of the following lines,
|
83
|
-
# if you need a database.
|
84
|
-
|
85
|
-
# Uncomment for DataMapper ORM
|
86
|
-
<%= "# " unless orm == :datamapper %>use_orm :datamapper
|
87
|
-
|
88
|
-
# Uncomment for ActiveRecord ORM
|
89
|
-
<%= "# " unless orm == :activerecord %>use_orm :activerecord
|
90
|
-
|
91
|
-
# Uncomment for Sequel ORM
|
92
|
-
<%= "# " unless orm == :sequel %>use_orm :sequel
|
93
|
-
|
94
|
-
|
95
|
-
#
|
96
|
-
# ==== Pick what you test with
|
97
|
-
#
|
98
|
-
|
99
|
-
# This defines which test framework the generators will use.
|
100
|
-
# RSpec is turned on by default.
|
101
|
-
#
|
102
|
-
# To use Test::Unit, you need to install the merb_test_unit gem.
|
103
|
-
# To use RSpec, you don't have to install any additional gems, since
|
104
|
-
# merb-core provides support for RSpec.
|
105
|
-
#
|
106
|
-
<%= "# " unless testing_framework == :test_unit %>use_test :test_unit
|
107
|
-
<%= "# " unless testing_framework == :rspec %>use_test :rspec
|
108
|
-
|
109
|
-
|
110
|
-
#
|
111
|
-
# ==== Choose which template engine to use by default
|
112
|
-
#
|
113
|
-
|
114
|
-
# Merb can generate views for different template engines, choose your favourite as the default.
|
115
|
-
|
116
|
-
<%= "# " unless template_engine == :erb %>use_template_engine :erb
|
117
|
-
<%= "# " unless template_engine == :haml %>use_template_engine :haml
|
118
|
-
|
119
|
-
|
120
|
-
#
|
121
|
-
# ==== Set up your basic configuration
|
122
|
-
#
|
123
|
-
|
124
|
-
# IMPORTANT:
|
125
|
-
#
|
126
|
-
# early on Merb boot init file is not yet loaded.
|
127
|
-
# Thus setting PORT, PID FILE and ADAPTER using init file does not
|
128
|
-
# make sense and only can lead to confusion because default settings
|
129
|
-
# will be used instead.
|
130
|
-
#
|
131
|
-
# Please use command line options for them.
|
132
|
-
# See http://wiki.merbivore.com/pages/merb-core-boot-process
|
133
|
-
# if you want to know more.
|
6
|
+
<%= "# " unless orm != :none %> use_orm :<%= orm %>
|
7
|
+
use_test :<%= testing_framework %>
|
8
|
+
use_template_engine :<%= template_engine %>
|
9
|
+
|
134
10
|
Merb::Config.use do |c|
|
135
|
-
|
136
|
-
|
137
|
-
# c[:session_id_key] = '_session_id'
|
11
|
+
c[:use_mutex] = false
|
12
|
+
c[:session_store] = 'cookie' # can also be 'memory', 'memcache', 'container', 'datamapper
|
138
13
|
|
139
|
-
#
|
140
|
-
c[:session_secret_key] = '<%= SHA1.new(rand(100000000000).to_s).to_s %>'
|
141
|
-
|
142
|
-
# There are various options here, by default Merb comes with 'cookie',
|
143
|
-
# 'memory', 'memcache' or 'container'.
|
144
|
-
# You can of course use your favorite ORM instead:
|
145
|
-
# 'datamapper', 'sequel' or 'activerecord'.
|
146
|
-
c[:session_store] = 'cookie'
|
14
|
+
# cookie session store configuration
|
15
|
+
c[:session_secret_key] = '<%= SHA1.new(rand(100000000000).to_s).to_s %>' # required for cookie session store
|
16
|
+
# c[:session_id_key] = '_session_id' # cookie session id key, defaults to "_session_id"
|
147
17
|
end
|
148
|
-
|
149
|
-
|
150
|
-
#
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
#
|
155
|
-
|
156
|
-
#
|
157
|
-
# Extlib::Inflection.word "erratum", "errata"
|
158
|
-
#
|
159
|
-
# In case singular and plural forms are the same omit
|
160
|
-
# second argument on call:
|
161
|
-
#
|
162
|
-
# Extlib::Inflection.word 'information'
|
163
|
-
#
|
164
|
-
# You can also define general, singularization and pluralization
|
165
|
-
# rules:
|
166
|
-
#
|
167
|
-
# Once the following rule is defined:
|
168
|
-
# Extlib::Inflection.rule 'y', 'ies'
|
169
|
-
#
|
170
|
-
# You can see the following results:
|
171
|
-
# irb> "fly".plural
|
172
|
-
# => flies
|
173
|
-
# irb> "cry".plural
|
174
|
-
# => cries
|
175
|
-
#
|
176
|
-
# Example for singularization rule:
|
177
|
-
#
|
178
|
-
# Extlib::Inflection.singular_rule 'o', 'oes'
|
179
|
-
#
|
180
|
-
# Works like this:
|
181
|
-
# irb> "heroes".singular
|
182
|
-
# => hero
|
183
|
-
#
|
184
|
-
# Example of pluralization rule:
|
185
|
-
# Extlib::Inflection.singular_rule 'fe', 'ves'
|
186
|
-
#
|
187
|
-
# And the result is:
|
188
|
-
# irb> "wife".plural
|
189
|
-
# => wives
|
18
|
+
|
19
|
+
Merb::BootLoader.before_app_loads do
|
20
|
+
# This will get executed after dependencies have been loaded but before your app's classes have loaded.
|
21
|
+
end
|
22
|
+
|
23
|
+
Merb::BootLoader.after_app_loads do
|
24
|
+
# This will get executed after your app's classes have been loaded.
|
25
|
+
end
|
@@ -1,122 +1,20 @@
|
|
1
|
-
#
|
2
|
-
# ==== Structure of Merb initializer
|
3
|
-
#
|
4
|
-
# 1. Load paths.
|
5
|
-
# 2. Dependencies configuration.
|
6
|
-
# 3. Libraries (ORM, testing tool, etc) you use.
|
7
|
-
# 4. Application-specific configuration.
|
1
|
+
# Go to http://wiki.merbivore.com/pages/init-rb
|
8
2
|
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
# Add the app's "gems" directory to the gem load path.
|
14
|
-
# Note that the gems directory must mirror the structure RubyGems uses for
|
15
|
-
# directories under which gems are kept.
|
16
|
-
#
|
17
|
-
# To conveniently set it up, use gem install -i <merb_app_root/gems>
|
18
|
-
# when installing gems. This will set up the structure under /gems
|
19
|
-
# automagically.
|
20
|
-
#
|
21
|
-
# An example:
|
22
|
-
#
|
23
|
-
# You want to bundle ActiveRecord and ActiveSupport with your Merb
|
24
|
-
# application to be deployment environment independent. To do so,
|
25
|
-
# install gems into merb_app_root/gems directory like this:
|
26
|
-
#
|
27
|
-
# gem install -i merb_app_root/gems activesupport-post-2.0.2.gem activerecord-post-2.0.2.gem
|
28
|
-
#
|
29
|
-
# Since RubyGems will search merb_app_root/gems for dependencies, order
|
30
|
-
# in the statement above is important: we need to install ActiveSupport which
|
31
|
-
# ActiveRecord depends on first.
|
32
|
-
#
|
33
|
-
# Remember that bundling of dependencies as gems with your application
|
34
|
-
# makes it independent of the environment it runs in and is a very
|
35
|
-
# good, encouraged practice to follow.
|
36
|
-
|
37
|
-
# If you want modules and classes from libraries organized like
|
38
|
-
# merbapp/lib/magicwand/lib/magicwand.rb to autoload,
|
39
|
-
# uncomment this.
|
40
|
-
# Merb.push_path(:lib, Merb.root / "lib") # uses **/*.rb as path glob.
|
41
|
-
|
42
|
-
# ==== Dependencies
|
43
|
-
|
44
|
-
# These are a few, but not all, of the standard merb-more dependencies:
|
45
|
-
#
|
46
|
-
# dependency "merb-action-args" # Provides support for querystring arguments to be passed in to controller actions
|
47
|
-
# dependency "merb-assets" # Provides link_to, asset_path, auto_link, image_tag methods (and lots more)
|
48
|
-
# dependency "merb-helpers" # Provides the form, date/time, and other helpers
|
49
|
-
# dependency "merb-cache" # Provides your application with caching functions
|
50
|
-
# dependency "merb-haml" # Adds rake tasks and the haml generators to your merb app
|
51
|
-
# dependency "merb-jquery" # Provides a #jquery method to insert jQuery code in to a content block
|
52
|
-
# dependency "merb-mailer" # Integrates mail support via Merb Mailer
|
53
|
-
|
54
|
-
# These are a few, but not all, of the merb-plugin dependencies:
|
55
|
-
#
|
56
|
-
# dependency "merb_param_protection" # Lets you have better control over your query string params and param logging
|
57
|
-
# dependency "merb_stories" # Provides rspec helper methods for your application
|
58
|
-
|
59
|
-
# Miscellaneous dependencies:
|
60
|
-
#
|
61
|
-
# Specify more than one dependency at a time with the #dependencies method:
|
62
|
-
# dependencies "RedCloth", "BlueCloth"
|
3
|
+
<%= "# " unless orm != :none %> use_orm :<%= orm %>
|
4
|
+
use_test :<%= testing_framework %>
|
5
|
+
use_template_engine :<%= template_engine %>
|
63
6
|
|
64
7
|
# Specify a specific version of a dependency
|
65
8
|
# dependency "RedCloth", "> 3.0"
|
66
9
|
|
67
|
-
|
68
|
-
# dependencies
|
69
|
-
|
70
|
-
|
10
|
+
Merb::BootLoader.before_app_loads do
|
11
|
+
# This will get executed after dependencies have been loaded but before your app's classes have loaded.
|
12
|
+
end
|
13
|
+
|
71
14
|
Merb::BootLoader.after_app_loads do
|
72
|
-
#
|
73
|
-
# loaded already. So, we can put the magic_admin dependency here:
|
74
|
-
# dependency "magic_admin"
|
15
|
+
# This will get executed after your app's classes have been loaded.
|
75
16
|
end
|
76
17
|
|
77
|
-
#
|
78
|
-
# ==== Set up your ORM of choice
|
79
|
-
#
|
80
|
-
|
81
|
-
# Merb doesn't come with database support by default. You need
|
82
|
-
# an ORM plugin. Install one, and uncomment one of the following lines,
|
83
|
-
# if you need a database.
|
84
|
-
|
85
|
-
# Uncomment for DataMapper ORM
|
86
|
-
<%= "# " unless orm == :datamapper %>use_orm :datamapper
|
87
|
-
|
88
|
-
# Uncomment for ActiveRecord ORM
|
89
|
-
<%= "# " unless orm == :activerecord %>use_orm :activerecord
|
90
|
-
|
91
|
-
# Uncomment for Sequel ORM
|
92
|
-
<%= "# " unless orm == :sequel %>use_orm :sequel
|
93
|
-
|
94
|
-
|
95
|
-
#
|
96
|
-
# ==== Pick what you test with
|
97
|
-
#
|
98
|
-
|
99
|
-
# This defines which test framework the generators will use.
|
100
|
-
# RSpec is turned on by default.
|
101
|
-
#
|
102
|
-
# To use Test::Unit, you need to install the merb_test_unit gem.
|
103
|
-
# To use RSpec, you don't have to install any additional gems, since
|
104
|
-
# merb-core provides support for RSpec.
|
105
|
-
#
|
106
|
-
<%= "# " unless testing_framework == :test_unit %>use_test :test_unit
|
107
|
-
<%= "# " unless testing_framework == :rspec %>use_test :rspec
|
108
|
-
|
109
|
-
|
110
|
-
#
|
111
|
-
# ==== Choose which template engine to use by default
|
112
|
-
#
|
113
|
-
|
114
|
-
# Merb can generate views for different template engines, choose your favourite as the default.
|
115
|
-
|
116
|
-
<%= "# " unless template_engine == :erb %>use_template_engine :erb
|
117
|
-
<%= "# " unless template_engine == :haml %>use_template_engine :haml
|
118
|
-
|
119
|
-
|
120
18
|
# Move this to application.rb if you want it to be reloadable in dev mode.
|
121
19
|
Merb::Router.prepare do
|
122
20
|
match('/').to(:controller => "<%= self.name.gsub("-", "_") %>", :action =>'index')
|
@@ -129,7 +27,7 @@ Merb::Config.use { |c|
|
|
129
27
|
c[:framework] = {},
|
130
28
|
c[:log_level] = :debug,
|
131
29
|
c[:log_stream] = STDOUT,
|
132
|
-
# or use file for
|
30
|
+
# or use file for logging:
|
133
31
|
# c[:log_file] = Merb.root / "log" / "merb.log",
|
134
32
|
c[:use_mutex] = false,
|
135
33
|
c[:session_store] = 'cookie',
|