merb-gen 0.9.9 → 0.9.10
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 +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',
|