merb-gen 0.9.10 → 0.9.11
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/lib/generators/layout.rb +1 -1
- data/lib/generators/merb/merb_core.rb +2 -2
- data/lib/generators/merb/merb_flat.rb +2 -3
- data/lib/generators/merb/merb_stack.rb +2 -2
- data/lib/generators/merb/merb_very_flat.rb +2 -2
- data/lib/generators/merb_plugin.rb +1 -1
- data/lib/generators/migration.rb +1 -1
- data/lib/generators/part_controller.rb +1 -1
- data/lib/generators/templates/application/common/dothtaccess +1 -1
- data/lib/generators/templates/application/common/merb.thor +79 -38
- data/lib/generators/templates/application/merb_core/config/environments/test.rb +2 -2
- data/lib/generators/templates/application/merb_core/config/rack.rb +0 -1
- data/lib/generators/templates/application/merb_stack/config/environments/test.rb +2 -2
- data/lib/generators/templates/application/merb_stack/config/rack.rb +0 -1
- data/lib/generators/templates/component/resource_controller/spec/requests/%file_name%_spec.rb +2 -2
- data/lib/merb-gen/generator.rb +0 -4
- metadata +3 -3
data/lib/generators/layout.rb
CHANGED
@@ -34,8 +34,8 @@ module Merb
|
|
34
34
|
:desc => 'Template engine to prefer for this application (one of: erb, haml).'
|
35
35
|
|
36
36
|
desc <<-DESC
|
37
|
-
|
38
|
-
|
37
|
+
Generates a new Merb application with Ruby on Rails like structure.
|
38
|
+
You can specify the ORM and testing framework.
|
39
39
|
DESC
|
40
40
|
|
41
41
|
first_argument :name, :required => true, :desc => "Application name"
|
@@ -34,9 +34,8 @@ module Merb
|
|
34
34
|
:desc => 'Template engine to prefer for this application (one of: erb, haml).'
|
35
35
|
|
36
36
|
desc <<-DESC
|
37
|
-
|
38
|
-
|
39
|
-
and "regular" Merb application.
|
37
|
+
Generates a new flat Merb application: all code in one file except for config files and
|
38
|
+
views, something in-between Sinatra and a "regular" Merb application.
|
40
39
|
DESC
|
41
40
|
|
42
41
|
first_argument :name, :required => true, :desc => "Application name"
|
@@ -38,8 +38,8 @@ module Merb
|
|
38
38
|
:desc => 'Template engine to prefer for this application (one of: erb, haml).'
|
39
39
|
|
40
40
|
desc <<-DESC
|
41
|
-
|
42
|
-
|
41
|
+
Generates a new "jump start" Merb application with support for DataMapper,
|
42
|
+
helpers, assets, mailer, caching, slices and merb-auth.
|
43
43
|
DESC
|
44
44
|
|
45
45
|
first_argument :name, :required => true, :desc => "Application name"
|
@@ -27,8 +27,8 @@ module Merb
|
|
27
27
|
:desc => 'Template engine to prefer for this application (one of: erb, haml).'
|
28
28
|
|
29
29
|
desc <<-DESC
|
30
|
-
|
31
|
-
|
30
|
+
Generates a new very flat Merb application: the whole application
|
31
|
+
in one file, similar to Sinatra or Camping.
|
32
32
|
DESC
|
33
33
|
|
34
34
|
first_argument :name, :required => true, :desc => "Application name"
|
data/lib/generators/migration.rb
CHANGED
@@ -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.1.0'
|
9
9
|
|
10
10
|
##############################################################################
|
11
11
|
|
@@ -301,7 +301,7 @@ module GemManagement
|
|
301
301
|
end
|
302
302
|
end
|
303
303
|
end
|
304
|
-
|
304
|
+
|
305
305
|
private
|
306
306
|
|
307
307
|
def executable_wrapper(spec, bin_file_name, minigems = true)
|
@@ -325,6 +325,7 @@ end
|
|
325
325
|
if File.directory?(gems_dir = File.join(Dir.pwd, 'gems')) ||
|
326
326
|
File.directory?(gems_dir = File.join(File.dirname(__FILE__), '..', 'gems'))
|
327
327
|
$BUNDLE = true; Gem.clear_paths; Gem.path.unshift(gems_dir)
|
328
|
+
ENV["PATH"] = "\#{File.dirname(__FILE__)}:\#{gems_dir}/bin:\#{ENV["PATH"]}"
|
328
329
|
if (local_gem = Dir[File.join(gems_dir, "specifications", "#{spec.name}-*.gemspec")].last)
|
329
330
|
version = File.basename(local_gem)[/-([\\.\\d]+)\\.gemspec$/, 1]
|
330
331
|
end
|
@@ -476,8 +477,9 @@ module MerbThorHelper
|
|
476
477
|
end
|
477
478
|
|
478
479
|
def install_dependency(dependency, opts = {})
|
479
|
-
|
480
|
-
|
480
|
+
version = dependency.version_requirements.to_s
|
481
|
+
install_opts = default_install_options.merge(:version => version)
|
482
|
+
Merb::Gem.install(dependency.name, install_opts.merge(opts))
|
481
483
|
end
|
482
484
|
|
483
485
|
def install_dependency_from_source(dependency, opts = {})
|
@@ -760,8 +762,10 @@ module Merb
|
|
760
762
|
if only_missing = comp == 'missing'
|
761
763
|
message "Preparing to install missing gems #{where} using #{strategy} strategy..."
|
762
764
|
comp = nil
|
765
|
+
clobber = false
|
763
766
|
else
|
764
767
|
message "Preparing to install #{where} using #{strategy} strategy..."
|
768
|
+
clobber = true
|
765
769
|
end
|
766
770
|
|
767
771
|
# If comp given, filter on known stack components
|
@@ -777,7 +781,7 @@ module Merb
|
|
777
781
|
warning "No dependencies to install..."
|
778
782
|
else
|
779
783
|
puts "#{deps.length} dependencies to install..."
|
780
|
-
install_dependencies(strategy, deps)
|
784
|
+
install_dependencies(strategy, deps, clobber)
|
781
785
|
end
|
782
786
|
|
783
787
|
# Show current dependency info now that we're done
|
@@ -873,10 +877,21 @@ module Merb
|
|
873
877
|
# merb:dependencies:configure --config-file file.yml # write to the specified config file
|
874
878
|
|
875
879
|
desc 'configure [comp]', 'Create a dependencies config file'
|
876
|
-
method_options "--dry-run" => :boolean, "--force" => :boolean
|
880
|
+
method_options "--dry-run" => :boolean, "--force" => :boolean, "--versions" => :boolean
|
877
881
|
def configure(comp = nil)
|
878
882
|
# If comp given, filter on known stack components
|
879
883
|
deps = comp ? Merb::Stack.select_component_dependencies(dependencies, comp) : dependencies
|
884
|
+
|
885
|
+
# If --versions is set, update the version_requirements with the actual version available
|
886
|
+
if options[:versions]
|
887
|
+
specs = local_gemspecs
|
888
|
+
deps.each do |dep|
|
889
|
+
if spec = specs.find { |s| s.name == dep.name }
|
890
|
+
dep.version_requirements = ::Gem::Requirement.create(spec.version)
|
891
|
+
end
|
892
|
+
end
|
893
|
+
end
|
894
|
+
|
880
895
|
config = YAML.dump(deps.map { |d| d.to_s })
|
881
896
|
puts "#{config}\n"
|
882
897
|
if File.exists?(config_file) && !options[:force]
|
@@ -902,31 +917,33 @@ module Merb
|
|
902
917
|
end
|
903
918
|
end
|
904
919
|
|
905
|
-
def install_dependencies(strategy, deps)
|
920
|
+
def install_dependencies(strategy, deps, clobber = true)
|
906
921
|
if method = strategy?(strategy)
|
907
922
|
# Clobber existing local dependencies
|
908
|
-
clobber_dependencies!
|
923
|
+
clobber_dependencies! if clobber
|
909
924
|
|
910
925
|
# Run the chosen strategy - collect files installed from stable gems
|
911
926
|
installed_from_stable = send(method, deps).map { |d| d.name }
|
912
927
|
|
913
|
-
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
|
921
|
-
|
922
|
-
|
923
|
-
|
924
|
-
|
928
|
+
unless dry_run?
|
929
|
+
# Sleep a bit otherwise the following steps won't see the new files
|
930
|
+
sleep(deps.length) if deps.length > 0 && deps.length <= 10
|
931
|
+
|
932
|
+
# Leave a file to denote the strategy that has been used for this dependency
|
933
|
+
self.local.each do |spec|
|
934
|
+
next unless File.directory?(spec.full_gem_path)
|
935
|
+
unless installed_from_stable.include?(spec.name)
|
936
|
+
FileUtils.touch(File.join(spec.full_gem_path, "#{strategy}.strategy"))
|
937
|
+
else
|
938
|
+
FileUtils.touch(File.join(spec.full_gem_path, "stable.strategy"))
|
939
|
+
end
|
940
|
+
end
|
925
941
|
|
926
|
-
|
927
|
-
|
928
|
-
|
929
|
-
|
942
|
+
# Add local binaries for the installed framework dependencies
|
943
|
+
comps = Merb::Stack.all_components & deps.map { |d| d.name }
|
944
|
+
comps << { :no_minigems => 'merb-gen' }
|
945
|
+
ensure_bin_wrapper_for(*comps)
|
946
|
+
end
|
930
947
|
return true
|
931
948
|
end
|
932
949
|
false
|
@@ -967,7 +984,7 @@ module Merb
|
|
967
984
|
end
|
968
985
|
end
|
969
986
|
end
|
970
|
-
|
987
|
+
|
971
988
|
deps
|
972
989
|
end
|
973
990
|
|
@@ -1037,15 +1054,12 @@ module Merb
|
|
1037
1054
|
# Selectively update repositories for the matching dependencies
|
1038
1055
|
update_dependency_repositories(deps) unless dry_run?
|
1039
1056
|
|
1040
|
-
# Skip gem dependencies to prevent them from being installed from stable;
|
1041
|
-
# however, core dependencies will be retrieved from source when available
|
1042
|
-
install_opts = { :ignore_dependencies => true }
|
1043
1057
|
if core = deps.find { |d| d.name == 'merb-core' }
|
1044
1058
|
if dry_run?
|
1045
1059
|
note "Installing #{core.name}..."
|
1046
1060
|
else
|
1047
|
-
if install_dependency_from_source(core
|
1048
|
-
elsif install_dependency(core
|
1061
|
+
if install_dependency_from_source(core)
|
1062
|
+
elsif install_dependency(core)
|
1049
1063
|
info "Installed #{core.name} from rubygems..."
|
1050
1064
|
installed_from_rubygems << core
|
1051
1065
|
end
|
@@ -1057,8 +1071,8 @@ module Merb
|
|
1057
1071
|
if dry_run?
|
1058
1072
|
note "Installing #{dependency.name}..."
|
1059
1073
|
else
|
1060
|
-
if install_dependency_from_source(dependency
|
1061
|
-
elsif install_dependency(dependency
|
1074
|
+
if install_dependency_from_source(dependency)
|
1075
|
+
elsif install_dependency(dependency)
|
1062
1076
|
info "Installed #{dependency.name} from rubygems..."
|
1063
1077
|
installed_from_rubygems << dependency
|
1064
1078
|
end
|
@@ -1079,24 +1093,31 @@ module Merb
|
|
1079
1093
|
end
|
1080
1094
|
|
1081
1095
|
# Extract application dependencies by querying the app directly.
|
1082
|
-
def self.extract_dependencies(merb_root
|
1096
|
+
def self.extract_dependencies(merb_root)
|
1083
1097
|
require 'merb-core'
|
1084
1098
|
if !@_merb_loaded || Merb.root != merb_root
|
1085
1099
|
Merb.start_environment(
|
1100
|
+
:log_level => :fatal,
|
1086
1101
|
:testing => true,
|
1087
1102
|
:adapter => 'runner',
|
1088
|
-
:environment =>
|
1103
|
+
:environment => ENV['MERB_ENV'] || 'development',
|
1089
1104
|
:merb_root => merb_root
|
1090
1105
|
)
|
1091
1106
|
@_merb_loaded = true
|
1092
1107
|
end
|
1093
1108
|
Merb::BootLoader::Dependencies.dependencies
|
1094
|
-
rescue => e
|
1109
|
+
rescue StandardError => e
|
1095
1110
|
error "Couldn't extract dependencies from application!"
|
1096
1111
|
error e.message
|
1097
1112
|
puts "Make sure you're executing the task from your app (--merb-root), or"
|
1098
1113
|
puts "specify a config option (--config or --config-file=YAML_FILE)"
|
1099
1114
|
return []
|
1115
|
+
rescue SystemExit
|
1116
|
+
error "Couldn't extract dependencies from application!"
|
1117
|
+
error "application failed to run"
|
1118
|
+
puts "Please check if your application runs using 'merb'; for example,"
|
1119
|
+
puts "look for any gem version mismatches in dependencies.rb"
|
1120
|
+
return []
|
1100
1121
|
end
|
1101
1122
|
|
1102
1123
|
# Parse the basic YAML config data, and process Gem::Dependency output.
|
@@ -1124,12 +1145,14 @@ module Merb
|
|
1124
1145
|
|
1125
1146
|
DM_STACK = %w[
|
1126
1147
|
extlib
|
1148
|
+
data_objects
|
1127
1149
|
dm-core
|
1128
1150
|
dm-aggregates
|
1129
1151
|
dm-migrations
|
1130
1152
|
dm-timestamps
|
1131
1153
|
dm-types
|
1132
1154
|
dm-validations
|
1155
|
+
merb_datamapper
|
1133
1156
|
]
|
1134
1157
|
|
1135
1158
|
MERB_STACK = %w[
|
@@ -1142,6 +1165,11 @@ module Merb
|
|
1142
1165
|
merb-mailer
|
1143
1166
|
merb-slices
|
1144
1167
|
merb-auth
|
1168
|
+
merb-auth-core
|
1169
|
+
merb-auth-more
|
1170
|
+
merb-auth-slice-password
|
1171
|
+
merb-param-protection
|
1172
|
+
merb-exceptions
|
1145
1173
|
] + DM_STACK
|
1146
1174
|
|
1147
1175
|
MERB_BASICS = %w[
|
@@ -1218,6 +1246,15 @@ module Merb
|
|
1218
1246
|
dm-rest-adapter
|
1219
1247
|
]
|
1220
1248
|
|
1249
|
+
DATA_OBJECTS = %w[
|
1250
|
+
data_objects
|
1251
|
+
do_derby do_hsqldb
|
1252
|
+
do_jdbc
|
1253
|
+
do_mysql
|
1254
|
+
do_postgres
|
1255
|
+
do_sqlite3
|
1256
|
+
]
|
1257
|
+
|
1221
1258
|
attr_accessor :system, :local, :missing
|
1222
1259
|
|
1223
1260
|
include MerbThorHelper
|
@@ -1388,6 +1425,7 @@ module Merb
|
|
1388
1425
|
comps["merb-more"] = MERB_MORE.sort
|
1389
1426
|
comps["merb-plugins"] = MERB_PLUGINS.sort
|
1390
1427
|
comps["dm-more"] = DM_MORE.sort
|
1428
|
+
comps["do"] = DATA_OBJECTS.sort
|
1391
1429
|
|
1392
1430
|
comps
|
1393
1431
|
end
|
@@ -1413,7 +1451,7 @@ module Merb
|
|
1413
1451
|
end
|
1414
1452
|
|
1415
1453
|
def self.framework_components
|
1416
|
-
%w[merb-core merb-more
|
1454
|
+
%w[merb-core merb-more].inject([]) do |all, comp|
|
1417
1455
|
all + components(comp)
|
1418
1456
|
end
|
1419
1457
|
end
|
@@ -1435,7 +1473,7 @@ module Merb
|
|
1435
1473
|
end
|
1436
1474
|
|
1437
1475
|
def self.base_components
|
1438
|
-
%w[thor rake]
|
1476
|
+
%w[thor rake extlib]
|
1439
1477
|
end
|
1440
1478
|
|
1441
1479
|
def self.all_components
|
@@ -1447,6 +1485,7 @@ module Merb
|
|
1447
1485
|
def self.core_dependencies(gem_dir = nil, ignore_deps = false)
|
1448
1486
|
@_core_dependencies ||= begin
|
1449
1487
|
if gem_dir # add local gems to index
|
1488
|
+
orig_gem_path = ::Gem.path
|
1450
1489
|
::Gem.clear_paths; ::Gem.path.unshift(gem_dir)
|
1451
1490
|
end
|
1452
1491
|
deps = []
|
@@ -1461,7 +1500,7 @@ module Merb
|
|
1461
1500
|
deps += gemspec.dependencies
|
1462
1501
|
end
|
1463
1502
|
end
|
1464
|
-
::Gem.
|
1503
|
+
::Gem.path.replace(orig_gem_path) if gem_dir # reset
|
1465
1504
|
deps
|
1466
1505
|
end
|
1467
1506
|
end
|
@@ -1818,6 +1857,8 @@ module Merb
|
|
1818
1857
|
message "Installing #{current_gem} from source..."
|
1819
1858
|
if install_dependency_from_source(dependency)
|
1820
1859
|
ensure_bin_wrapper_for(dependency.name) if options[:binaries]
|
1860
|
+
else
|
1861
|
+
raise "gem source not found"
|
1821
1862
|
end
|
1822
1863
|
end
|
1823
1864
|
end
|
@@ -6,7 +6,7 @@ Merb::Config.use { |c|
|
|
6
6
|
# log less in testing environment
|
7
7
|
c[:log_level] = :error
|
8
8
|
|
9
|
-
c[:log_file] = Merb.root / "log" / "test.log"
|
9
|
+
#c[:log_file] = Merb.root / "log" / "test.log"
|
10
10
|
# or redirect logger using IO handle
|
11
|
-
|
11
|
+
c[:log_stream] = STDOUT
|
12
12
|
}
|
@@ -6,7 +6,7 @@ Merb::Config.use { |c|
|
|
6
6
|
# log less in testing environment
|
7
7
|
c[:log_level] = :error
|
8
8
|
|
9
|
-
c[:log_file] = Merb.root / "log" / "test.log"
|
9
|
+
#c[:log_file] = Merb.root / "log" / "test.log"
|
10
10
|
# or redirect logger using IO handle
|
11
|
-
|
11
|
+
c[:log_stream] = STDOUT
|
12
12
|
}
|
data/lib/generators/templates/component/resource_controller/spec/requests/%file_name%_spec.rb
CHANGED
@@ -52,9 +52,9 @@ describe "resource(:<%= plural_model %>)" do
|
|
52
52
|
|
53
53
|
it "redirects to resource(:<%= plural_model %>)" do
|
54
54
|
<%- if orm.to_sym == :datamapper -%>
|
55
|
-
@response.should redirect_to(resource(<%=
|
55
|
+
@response.should redirect_to(resource(<%= model_class_name %>.first), :message => {:notice => "<%= singular_model %> was successfully created"})
|
56
56
|
<%- elsif orm.to_sym == :activerecord -%>
|
57
|
-
@response.should redirect_to(resource(<%=
|
57
|
+
@response.should redirect_to(resource(<%= model_class_name %>.first), :message => {:notice => "<%= singular_model %> was successfully created"})
|
58
58
|
<% end -%>
|
59
59
|
end
|
60
60
|
|
data/lib/merb-gen/generator.rb
CHANGED
@@ -41,10 +41,6 @@ module Merb
|
|
41
41
|
Merb::BootLoader::Logger.run
|
42
42
|
Merb::BootLoader::BuildFramework.run
|
43
43
|
Merb::BootLoader::Dependencies.run
|
44
|
-
|
45
|
-
Merb::BootLoader::BeforeAppLoads.run
|
46
|
-
Merb::BootLoader::ReloadClasses.run
|
47
|
-
Merb::BootLoader::AfterAppLoads.run
|
48
44
|
|
49
45
|
super
|
50
46
|
options[:orm] ||= Merb.orm
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: merb-gen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jonas Nicklas
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-10-
|
12
|
+
date: 2008-10-29 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -20,7 +20,7 @@ dependencies:
|
|
20
20
|
requirements:
|
21
21
|
- - ">="
|
22
22
|
- !ruby/object:Gem::Version
|
23
|
-
version: 0.9.
|
23
|
+
version: 0.9.11
|
24
24
|
version:
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: templater
|