multiengine 0.5.0
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/Gemfile +8 -0
- data/MIT-LICENSE +20 -0
- data/README.textile +57 -0
- data/Rakefile +43 -0
- data/bin/mengine +8 -0
- data/lib/multi_engine.rb +355 -0
- data/lib/templates/gitignore +6 -0
- data/lib/templates/rails/application.rb +12 -0
- data/lib/templates/rails/boot.rb +11 -0
- data/lib/templates/root/%underscored%.gemspec.tt +9 -0
- data/lib/templates/root/Gemfile.tt +12 -0
- data/lib/templates/root/MIT-LICENSE.tt +20 -0
- data/lib/templates/root/README.rdoc.tt +3 -0
- data/lib/templates/root/Rakefile.tt +36 -0
- data/lib/templates/root/lib/%underscored%.rb.tt +2 -0
- data/lib/templates/spec/spec_config.rb.tt +20 -0
- data/lib/templates/spec/spec_helper.rb +33 -0
- data/lib/templates/spec/spec_init.rb.tt +13 -0
- data/lib/templates/test/%underscored%_test.rb.tt +7 -0
- data/lib/templates/test/config.rb.tt +3 -0
- data/lib/templates/test/init.rb.tt +15 -0
- data/lib/templates/test/integration/navigation_test.rb.tt +7 -0
- data/lib/templates/test/orm/active_record_helper.rb.tt +12 -0
- data/lib/templates/test/orm/mongoid_helper.rb.tt +4 -0
- data/lib/templates/test/support/integration_case.rb +5 -0
- data/lib/templates/test/test_helper.rb +22 -0
- data/lib/test_helpers/spec/dummy_spec.rb +7 -0
- data/lib/test_helpers/spec/integration/navigation_spec.rb +9 -0
- data/lib/test_helpers/spec/orm/active_record_helper.rb +7 -0
- data/lib/test_helpers/spec/orm/mongoid_helper.rb +5 -0
- data/lib/xdummy.rb.inprogress +256 -0
- metadata +166 -0
data/Gemfile
ADDED
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2010 José Valim http://blog.plataformatec.com.br
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.textile
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
h1. Multi App Engine
|
2
|
+
|
3
|
+
Similar to "enginex":https://github.com/josevalim/enginex but can generate and setup multiple individual dummy apps (configured for either Mongoid or Active Record) for testing your gem.
|
4
|
+
|
5
|
+
h2. Usage
|
6
|
+
|
7
|
+
@$ mengine ENGINE_NAME [options]@
|
8
|
+
|
9
|
+
Use _--help_ to see supported options.
|
10
|
+
|
11
|
+
h2. Example usage
|
12
|
+
|
13
|
+
Create a default engine called 'MyEngine'
|
14
|
+
|
15
|
+
@$ mengine my-engine@
|
16
|
+
|
17
|
+
Dummy apps:
|
18
|
+
* _dummy-active_record_
|
19
|
+
|
20
|
+
h2. Dummies for ORMs
|
21
|
+
|
22
|
+
Create engine named 'MyEngine' and dummy apps configured for A.R and Mongoid
|
23
|
+
|
24
|
+
@$ mengine my-engine --orms mongoid ar@
|
25
|
+
|
26
|
+
Dummy apps:
|
27
|
+
* _dummy-mongoid_
|
28
|
+
* _dummy-active_record_
|
29
|
+
|
30
|
+
h2. Testing framework
|
31
|
+
|
32
|
+
Create engine named 'Demox' and a single dummy app configured for Mongoid.
|
33
|
+
Use Rspec as the testing framework for the engine.
|
34
|
+
|
35
|
+
@$ mengine demox --orms mongoid -t rspec@
|
36
|
+
|
37
|
+
Dummy apps:
|
38
|
+
* dummy-mongoid
|
39
|
+
|
40
|
+
h2. Dummy application types
|
41
|
+
|
42
|
+
Create engine named 'Demox' and create dummy apps for cancan and devise (types).
|
43
|
+
For each type create dummy apps for A.R and Mongoid. Use Rspec as the testing framework.
|
44
|
+
|
45
|
+
@$ mengine demo --orms mongoid ar --types cancan devise -t rspec@
|
46
|
+
|
47
|
+
Dummy apps:
|
48
|
+
* _dummy-cancan-mongoid_
|
49
|
+
* _dummy-cancan-active_record_
|
50
|
+
* _dummy-devise-mongoid_
|
51
|
+
* _dummy-devise-active_record_
|
52
|
+
|
53
|
+
h2. Bugs and Feedback
|
54
|
+
|
55
|
+
If you discover any bugs, feel free to send me a message or create an issue on GitHub tracker
|
56
|
+
|
57
|
+
MIT License. Copyright 2011 Kristian Mandrup
|
data/Rakefile
ADDED
@@ -0,0 +1,43 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rake'
|
3
|
+
require 'rake/testtask'
|
4
|
+
require 'rake/rdoctask'
|
5
|
+
|
6
|
+
Rake::TestTask.new(:test) do |t|
|
7
|
+
t.libs << 'lib'
|
8
|
+
t.libs << 'test'
|
9
|
+
t.pattern = 'test/*_test.rb'
|
10
|
+
t.verbose = true
|
11
|
+
end
|
12
|
+
|
13
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
14
|
+
rdoc.rdoc_dir = 'rdoc'
|
15
|
+
rdoc.title = 'Multi Engine'
|
16
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
17
|
+
rdoc.rdoc_files.include('README.rdoc')
|
18
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
19
|
+
end
|
20
|
+
|
21
|
+
begin
|
22
|
+
require 'jeweler'
|
23
|
+
Jeweler::Tasks.new do |s|
|
24
|
+
s.name = "multiengine"
|
25
|
+
s.version = "0.5.0"
|
26
|
+
s.summary = "Creates a Rails 3 engine configuration with multiple dummy apps for testing"
|
27
|
+
s.email = "kmandrup@gmail.com"
|
28
|
+
s.homepage = "http://github.com/kristianmandrup/multiapp-engine"
|
29
|
+
s.description = "Creates a Rails 3 engine configuration with multiple dummy apps and test framework configured and ready to go"
|
30
|
+
s.authors = ['Kristian Mandrup']
|
31
|
+
s.files = FileList["[A-Z]*", "lib/**/*", "bin/*"]
|
32
|
+
s.bindir = "bin"
|
33
|
+
s.executables = %w(mengine)
|
34
|
+
s.add_dependency "thor", "~> 0.14.6"
|
35
|
+
s.add_dependency "rails", "~> 3.1.0.rc1"
|
36
|
+
s.add_dependency "rake", "~> 0.9"
|
37
|
+
s.add_dependency "sugar-high", "~> 0.4"
|
38
|
+
end
|
39
|
+
|
40
|
+
Jeweler::GemcutterTasks.new
|
41
|
+
rescue LoadError
|
42
|
+
puts "Jeweler, or one of its dependencies, is not available. Install it with: gem install jeweler"
|
43
|
+
end
|
data/bin/mengine
ADDED
data/lib/multi_engine.rb
ADDED
@@ -0,0 +1,355 @@
|
|
1
|
+
require "thor/group"
|
2
|
+
require "active_support"
|
3
|
+
require "active_support/version"
|
4
|
+
require "active_support/core_ext/string"
|
5
|
+
|
6
|
+
require "rails/generators"
|
7
|
+
require "rails/generators/rails/app/app_generator"
|
8
|
+
|
9
|
+
require "sugar-high/file"
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
class MultiEngine < Thor::Group
|
13
|
+
include Thor::Actions
|
14
|
+
check_unknown_options!
|
15
|
+
|
16
|
+
def self.source_root
|
17
|
+
@_source_root ||= File.expand_path('../templates', __FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
def self.say_step(message)
|
21
|
+
@step = (@step || 0) + 1
|
22
|
+
class_eval <<-METHOD, __FILE__, __LINE__ + 1
|
23
|
+
def step_#{@step}
|
24
|
+
#{"puts" if @step > 1}
|
25
|
+
say_status "STEP #{@step}", #{message.inspect}
|
26
|
+
end
|
27
|
+
METHOD
|
28
|
+
end
|
29
|
+
|
30
|
+
argument :path, :type => :string,
|
31
|
+
:desc => "Path to the engine to be created"
|
32
|
+
|
33
|
+
class_option :test_framework, :default => "rspec", :aliases => "-t",
|
34
|
+
:desc => "Test framework to use. test_unit or rspec."
|
35
|
+
|
36
|
+
class_option :orms, :type => :array, :default => [],
|
37
|
+
:desc => "Datastore frameworks to use. mongoid or active_record."
|
38
|
+
|
39
|
+
class_option :types, :type => :array, :default => [],
|
40
|
+
:desc => "Dummy application names"
|
41
|
+
|
42
|
+
class_option :tu, :type => :boolean, :default => true,
|
43
|
+
:desc => "Skip testunit generation for dummy apps."
|
44
|
+
|
45
|
+
class_option :js, :type => :boolean, :default => true,
|
46
|
+
:desc => "Skip javascript generation for dummy apps."
|
47
|
+
|
48
|
+
|
49
|
+
desc "Creates a Rails 3 engine with Rakefile, Gemfile and running tests."
|
50
|
+
|
51
|
+
say_step "Creating gem skeleton"
|
52
|
+
|
53
|
+
def create_root
|
54
|
+
self.destination_root = File.expand_path(path, destination_root)
|
55
|
+
set_accessors!
|
56
|
+
|
57
|
+
directory "root", "."
|
58
|
+
FileUtils.cd(destination_root)
|
59
|
+
end
|
60
|
+
|
61
|
+
def create_tests_or_specs
|
62
|
+
directory test_path
|
63
|
+
end
|
64
|
+
|
65
|
+
def change_gitignore
|
66
|
+
template "gitignore", ".gitignore"
|
67
|
+
end
|
68
|
+
|
69
|
+
def invoke_rails_app_generators
|
70
|
+
say "Vendoring Rails applications at #{test_path}/dummy-apps"
|
71
|
+
types.each do |type|
|
72
|
+
say "Creating #{type} apps"
|
73
|
+
self.current_type = type
|
74
|
+
orms.each do |orm|
|
75
|
+
self.current_orm = translate(orm)
|
76
|
+
|
77
|
+
say "Creating #{type} dummy Rails app with #{orm_name}", :green
|
78
|
+
# say "Location: #{dummy_app_path}"
|
79
|
+
command = "rails new #{app_args.join(' ')} -f" # force overwrite
|
80
|
+
say command
|
81
|
+
|
82
|
+
exec_command command
|
83
|
+
|
84
|
+
#invoke Rails::Generators::AppGenerator, app_args
|
85
|
+
|
86
|
+
say "Configuring Rails app"
|
87
|
+
change_config_files
|
88
|
+
|
89
|
+
# say "Removing unneeded files"
|
90
|
+
remove_uneeded_rails_files
|
91
|
+
|
92
|
+
send orm_config_method if respond_to?(orm_config_method)
|
93
|
+
|
94
|
+
say "Configuring testing framework for #{orm_name}"
|
95
|
+
set_orm_helpers
|
96
|
+
|
97
|
+
ensure_app_class_name
|
98
|
+
|
99
|
+
FileUtils.cd(destination_root)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
protected
|
105
|
+
|
106
|
+
attr_accessor :current_orm, :current_type
|
107
|
+
|
108
|
+
def ensure_app_class_name
|
109
|
+
File.replace_content_from application_file, :where => /Dummy\S+/, :with => dummy_app_class_name
|
110
|
+
end
|
111
|
+
|
112
|
+
def orm_name
|
113
|
+
translate current_orm
|
114
|
+
end
|
115
|
+
|
116
|
+
def translate orm
|
117
|
+
case orm.to_sym
|
118
|
+
when :ar
|
119
|
+
'active_record'
|
120
|
+
else
|
121
|
+
orm
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def dummy_app_path
|
126
|
+
dummy_path
|
127
|
+
end
|
128
|
+
|
129
|
+
def dummy_app_name
|
130
|
+
name = "dummy"
|
131
|
+
name << "-#{current_type}" if current_type && !current_type.blank?
|
132
|
+
name << "-#{current_orm}"
|
133
|
+
name
|
134
|
+
end
|
135
|
+
|
136
|
+
def dummy_path
|
137
|
+
"#{test_path}/dummy-apps/#{dummy_app_name}"
|
138
|
+
end
|
139
|
+
|
140
|
+
def orms
|
141
|
+
@orms ||= !options[:orms].empty? ? options[:orms] : ['active_record']
|
142
|
+
end
|
143
|
+
|
144
|
+
def types
|
145
|
+
@types ||= !options[:types].empty? ? options[:types] : [""]
|
146
|
+
end
|
147
|
+
|
148
|
+
def set_orm_helpers
|
149
|
+
# say "Configuring testing files for #{current_orm} app"
|
150
|
+
inside test_path do
|
151
|
+
unless File.directory? dummy_app_integration_test_dir
|
152
|
+
empty_directory dummy_app_integration_test_dir
|
153
|
+
end
|
154
|
+
|
155
|
+
copy_orm_helper
|
156
|
+
|
157
|
+
if File.exist?(navigation_file) || File.exist?(dummy_file)
|
158
|
+
# say "Copying test files into /#{dummy_app_name}"
|
159
|
+
copy_test_files navigation_file, dummy_file
|
160
|
+
inside app_specs_dummy_dir do
|
161
|
+
# say "Inside #{app_specs_dummy_dir}"
|
162
|
+
replace_orm_in navigation_file
|
163
|
+
replace_orm_in dummy_file
|
164
|
+
end
|
165
|
+
end
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
def copy_orm_helper
|
170
|
+
file = "#{current_orm}_helper.rb"
|
171
|
+
target_file = "#{app_specs_dummy_dir}/#{file}"
|
172
|
+
# say "From #{test_helper_path} copy"
|
173
|
+
FileUtils.cp("#{test_helper_path}/orm/#{file}", target_file)
|
174
|
+
File.replace_content_from target_file, :where => '#dummy_app_name#', :with => dummy_app_name
|
175
|
+
end
|
176
|
+
|
177
|
+
def test_helper_path
|
178
|
+
File.join(File.dirname(__FILE__), 'test_helpers', test_path).gsub /.+\/\//, ''
|
179
|
+
end
|
180
|
+
|
181
|
+
def app_specs_dummy_dir
|
182
|
+
"app_specs/#{dummy_app_name}"
|
183
|
+
end
|
184
|
+
|
185
|
+
def dummy_app_integration_test_dir
|
186
|
+
"#{app_specs_dummy_dir}/integration"
|
187
|
+
end
|
188
|
+
|
189
|
+
def copy_test_files *files
|
190
|
+
files.each do |file|
|
191
|
+
target_file = "#{app_specs_dummy_dir}/#{file}"
|
192
|
+
src_file = File.join(test_helper_path, file)
|
193
|
+
# say "Copy #{file} to #{target_file}"
|
194
|
+
FileUtils.cp(src_file, target_file) if File.exist?(file)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
def replace_orm_in file
|
199
|
+
return if !File.exist?(file)
|
200
|
+
# say "Replacing #orm# with #{current_orm} inside #{file}"
|
201
|
+
File.replace_content_from file, :where => '#orm#', :with => current_orm
|
202
|
+
File.replace_content_from file, :where => '#path#', :with => app_specs_dummy_dir
|
203
|
+
File.replace_content_from file, :where => '#camelized#', :with => dummy_app_class_name
|
204
|
+
end
|
205
|
+
|
206
|
+
def navigation_file
|
207
|
+
"integration/navigation_#{test_ext}.rb"
|
208
|
+
end
|
209
|
+
|
210
|
+
def dummy_file
|
211
|
+
"dummy_#{test_ext}.rb"
|
212
|
+
end
|
213
|
+
|
214
|
+
def dummy_app_test_path
|
215
|
+
File.join(dummy_app_path, test_path)
|
216
|
+
end
|
217
|
+
|
218
|
+
def orm_config_method
|
219
|
+
"config_#{current_orm}"
|
220
|
+
end
|
221
|
+
|
222
|
+
def config_mongoid
|
223
|
+
return if !current_orm == 'mongoid'
|
224
|
+
|
225
|
+
say "Configuring app for #{current_orm}"
|
226
|
+
inside dummy_app_path do
|
227
|
+
gemfile = 'Gemfile'
|
228
|
+
|
229
|
+
# File.insert_into gemfile, :after => 'gem "sqlite3"' do
|
230
|
+
# %q{gem "mongoid"
|
231
|
+
# gem "bson_ext"
|
232
|
+
# }
|
233
|
+
# end
|
234
|
+
|
235
|
+
append_to_file gemfile do
|
236
|
+
%q{gem "mongoid"
|
237
|
+
gem "bson_ext"
|
238
|
+
}
|
239
|
+
end
|
240
|
+
File.remove_content_from gemfile, :where => 'gem "sqlite3"'
|
241
|
+
|
242
|
+
if File.exist? 'config/database.yml'
|
243
|
+
# say "Delete database.yml"
|
244
|
+
File.delete! 'config/database.yml'
|
245
|
+
end
|
246
|
+
|
247
|
+
# say "Remove active record from #{application_file}"
|
248
|
+
File.remove_content_from 'config/application.rb', :where => 'require "active_record/railtie"'
|
249
|
+
|
250
|
+
exec_command 'bundle install'
|
251
|
+
exec_command 'rails g mongoid:config'
|
252
|
+
end
|
253
|
+
end
|
254
|
+
|
255
|
+
def exec_command command
|
256
|
+
Kernel::system command
|
257
|
+
end
|
258
|
+
|
259
|
+
def remove_uneeded_rails_files
|
260
|
+
inside dummy_app_path do
|
261
|
+
remove_file ".gitignore"
|
262
|
+
# remove_file "db/seeds.rb"
|
263
|
+
remove_file "doc"
|
264
|
+
# remove_file "Gemfile"
|
265
|
+
remove_file "lib/tasks"
|
266
|
+
remove_file "public/images/rails.png"
|
267
|
+
remove_file "public/index.html"
|
268
|
+
remove_file "public/robots.txt"
|
269
|
+
remove_file "README"
|
270
|
+
remove_file "test"
|
271
|
+
remove_file "vendor"
|
272
|
+
end
|
273
|
+
end
|
274
|
+
|
275
|
+
def change_config_files
|
276
|
+
store_application_definition!
|
277
|
+
template "rails/boot.rb", "#{dummy_app_path}/config/boot.rb", :force => true
|
278
|
+
template "rails/application.rb", "#{dummy_app_path}/config/application.rb", :force => true
|
279
|
+
end
|
280
|
+
|
281
|
+
def app_args
|
282
|
+
args = [dummy_app_path] # skip test unit
|
283
|
+
args << "-T" if skip_testunit?
|
284
|
+
args << "-J" if skip_javascript?
|
285
|
+
# skip active record is orm is set to another datastore
|
286
|
+
args << "-O" if !active_record?
|
287
|
+
args
|
288
|
+
end
|
289
|
+
|
290
|
+
def active_record?
|
291
|
+
!current_orm || ['active_record', 'ar'].include?(current_orm)
|
292
|
+
end
|
293
|
+
|
294
|
+
def skip_testunit?
|
295
|
+
options[:tu]
|
296
|
+
end
|
297
|
+
|
298
|
+
def skip_javascript?
|
299
|
+
options[:js]
|
300
|
+
end
|
301
|
+
|
302
|
+
def rspec?
|
303
|
+
options[:test_framework] == "rspec"
|
304
|
+
end
|
305
|
+
|
306
|
+
def test_unit?
|
307
|
+
options[:test_framework] == "test_unit"
|
308
|
+
end
|
309
|
+
|
310
|
+
def test_path
|
311
|
+
rspec? ? "spec" : "test"
|
312
|
+
end
|
313
|
+
alias_method :test_ext, :test_path
|
314
|
+
|
315
|
+
def self.banner
|
316
|
+
self_task.formatted_usage(self, false)
|
317
|
+
end
|
318
|
+
|
319
|
+
def application_definition
|
320
|
+
contents = File.read(config_app_file)
|
321
|
+
index = (contents.index("module #{dummy_app_class_name}")) || 0
|
322
|
+
contents[index..-1]
|
323
|
+
end
|
324
|
+
alias :store_application_definition! :application_definition
|
325
|
+
|
326
|
+
def dummy_app_class_name
|
327
|
+
dummy_app_name.underscore.camelize
|
328
|
+
end
|
329
|
+
|
330
|
+
def config_app_file
|
331
|
+
File.expand_path(application_file, destination_root)
|
332
|
+
end
|
333
|
+
|
334
|
+
def application_file
|
335
|
+
"#{dummy_app_path}/config/application.rb"
|
336
|
+
end
|
337
|
+
|
338
|
+
# Cache accessors since we are changing the directory
|
339
|
+
def set_accessors!
|
340
|
+
self.name
|
341
|
+
self.class.source_root
|
342
|
+
end
|
343
|
+
|
344
|
+
def name
|
345
|
+
@name ||= File.basename(destination_root)
|
346
|
+
end
|
347
|
+
|
348
|
+
def camelized
|
349
|
+
@camelized ||= underscored.camelize
|
350
|
+
end
|
351
|
+
|
352
|
+
def underscored
|
353
|
+
@underscored ||= name.underscore
|
354
|
+
end
|
355
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
require File.expand_path('../boot', __FILE__)
|
2
|
+
|
3
|
+
require "active_model/railtie"
|
4
|
+
require "active_record/railtie"
|
5
|
+
require "action_controller/railtie"
|
6
|
+
require "action_view/railtie"
|
7
|
+
require "action_mailer/railtie"
|
8
|
+
|
9
|
+
Bundler.require
|
10
|
+
require "<%= underscored %>"
|
11
|
+
|
12
|
+
<%= application_definition %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
dir = '../../../../../'
|
3
|
+
gemfile = File.expand_path("#{dir}Gemfile", __FILE__)
|
4
|
+
|
5
|
+
if File.exist?(gemfile)
|
6
|
+
ENV['BUNDLE_GEMFILE'] = gemfile
|
7
|
+
require 'bundler'
|
8
|
+
Bundler.setup
|
9
|
+
end
|
10
|
+
|
11
|
+
$:.unshift File.expand_path("#{dir}lib", __FILE__)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Provide a simple gemspec so you can easily use your enginex
|
2
|
+
# project in your rails apps through git.
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "<%= underscored %>"
|
5
|
+
s.summary = "Insert <%= camelized %> summary."
|
6
|
+
s.description = "Insert <%= camelized %> description."
|
7
|
+
s.files = Dir["{app,lib,config}/**/*"] + ["MIT-LICENSE", "Rakefile", "Gemfile", "README.rdoc"]
|
8
|
+
s.version = "0.0.1"
|
9
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
|
3
|
+
gem "rails", "<%= ActiveSupport::VERSION::STRING %>"
|
4
|
+
gem "capybara", ">= 0.4.0"
|
5
|
+
gem "sqlite3"
|
6
|
+
<%- if rspec? %>
|
7
|
+
gem "rspec-rails", ">= 2.0.0.beta"
|
8
|
+
<% end -%>
|
9
|
+
|
10
|
+
# To use debugger (ruby-debug for Ruby 1.8.7+, ruby-debug19 for Ruby 1.9.2+)
|
11
|
+
# gem 'ruby-debug'
|
12
|
+
# gem 'ruby-debug19'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright <%= Date.today.year %> YOURNAME
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'rubygems'
|
3
|
+
begin
|
4
|
+
require 'bundler/setup'
|
5
|
+
rescue LoadError
|
6
|
+
puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
|
7
|
+
end
|
8
|
+
|
9
|
+
require 'rake'
|
10
|
+
require 'rake/rdoctask'
|
11
|
+
|
12
|
+
<% if rspec? -%>
|
13
|
+
require 'rspec/core'
|
14
|
+
require 'rspec/core/rake_task'
|
15
|
+
|
16
|
+
RSpec::Core::RakeTask.new(:spec)
|
17
|
+
<% else -%>
|
18
|
+
require 'rake/testtask'
|
19
|
+
|
20
|
+
Rake::TestTask.new(:test) do |t|
|
21
|
+
t.libs << 'lib'
|
22
|
+
t.libs << 'test'
|
23
|
+
t.pattern = 'test/**/*_test.rb'
|
24
|
+
t.verbose = false
|
25
|
+
end
|
26
|
+
<% end -%>
|
27
|
+
|
28
|
+
task :default => :<%= test_path %>
|
29
|
+
|
30
|
+
Rake::RDocTask.new(:rdoc) do |rdoc|
|
31
|
+
rdoc.rdoc_dir = 'rdoc'
|
32
|
+
rdoc.title = '<%= camelized %>'
|
33
|
+
rdoc.options << '--line-numbers' << '--inline-source'
|
34
|
+
rdoc.rdoc_files.include('README.rdoc')
|
35
|
+
rdoc.rdoc_files.include('lib/**/*.rb')
|
36
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# Load support files
|
2
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
3
|
+
|
4
|
+
RSpec.configure do |config|
|
5
|
+
# Remove this line if you don't want RSpec's should and should_not
|
6
|
+
# methods or matchers
|
7
|
+
require 'rspec/expectations'
|
8
|
+
config.include RSpec::Matchers
|
9
|
+
|
10
|
+
# == Mock Framework
|
11
|
+
config.mock_with :rspec
|
12
|
+
|
13
|
+
# # include MyHelpers module in every acceptance spec
|
14
|
+
# config.include MyHelpers, :type => :acceptance
|
15
|
+
#
|
16
|
+
# config.before(:each, :type => :acceptance) do
|
17
|
+
# # Some code to run before any acceptance spec
|
18
|
+
# end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
|
4
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
5
|
+
require "rails/test_help"
|
6
|
+
require "rspec/rails"
|
7
|
+
|
8
|
+
ActionMailer::Base.delivery_method = :test
|
9
|
+
ActionMailer::Base.perform_deliveries = true
|
10
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
11
|
+
|
12
|
+
Rails.backtrace_cleaner.remove_silencers!
|
13
|
+
|
14
|
+
# Configure capybara for integration testing
|
15
|
+
require "capybara/rails"
|
16
|
+
Capybara.default_driver = :rack_test
|
17
|
+
Capybara.default_selector = :css
|
18
|
+
|
19
|
+
# Run any available migration
|
20
|
+
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
21
|
+
|
22
|
+
# Load support files
|
23
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
24
|
+
|
25
|
+
RSpec.configure do |config|
|
26
|
+
# Remove this line if you don't want RSpec's should and should_not
|
27
|
+
# methods or matchers
|
28
|
+
require 'rspec/expectations'
|
29
|
+
config.include RSpec::Matchers
|
30
|
+
|
31
|
+
# == Mock Framework
|
32
|
+
config.mock_with :rspec
|
33
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require "rails/test_help"
|
2
|
+
require "rspec/rails"
|
3
|
+
|
4
|
+
ActionMailer::Base.delivery_method = :test
|
5
|
+
ActionMailer::Base.perform_deliveries = true
|
6
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
7
|
+
|
8
|
+
Rails.backtrace_cleaner.remove_silencers!
|
9
|
+
|
10
|
+
# Configure capybara for integration testing
|
11
|
+
require "capybara/rails"
|
12
|
+
Capybara.default_driver = :rack_test
|
13
|
+
Capybara.default_selector = :css
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
|
4
|
+
require "rails/test_help"
|
5
|
+
|
6
|
+
ActionMailer::Base.delivery_method = :test
|
7
|
+
ActionMailer::Base.perform_deliveries = true
|
8
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
9
|
+
|
10
|
+
Rails.backtrace_cleaner.remove_silencers!
|
11
|
+
|
12
|
+
# Configure capybara for integration testing
|
13
|
+
require "capybara/rails"
|
14
|
+
Capybara.default_driver = :rack_test
|
15
|
+
Capybara.default_selector = :css
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
require File.expand_path("../../dummy_apps/<%= current_app_name %>/config/environment.rb", __FILE__)
|
4
|
+
|
5
|
+
require 'spec_helper/init'
|
6
|
+
|
7
|
+
# Run any available migration
|
8
|
+
migrations_dir = File.expand_path("../../dummy-apps/<%= current_app_name %>/db/migrate/", __FILE__)
|
9
|
+
|
10
|
+
ActiveRecord::Migrator.migrate migrations_dir
|
11
|
+
|
12
|
+
require 'spec_helper/config'
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
|
4
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
5
|
+
require "rails/test_help"
|
6
|
+
|
7
|
+
ActionMailer::Base.delivery_method = :test
|
8
|
+
ActionMailer::Base.perform_deliveries = true
|
9
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
10
|
+
|
11
|
+
Rails.backtrace_cleaner.remove_silencers!
|
12
|
+
|
13
|
+
# Configure capybara for integration testing
|
14
|
+
require "capybara/rails"
|
15
|
+
Capybara.default_driver = :rack_test
|
16
|
+
Capybara.default_selector = :css
|
17
|
+
|
18
|
+
# Run any available migration
|
19
|
+
ActiveRecord::Migrator.migrate File.expand_path("../dummy/db/migrate/", __FILE__)
|
20
|
+
|
21
|
+
# Load support files
|
22
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
@@ -0,0 +1,7 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
require 'dummy-apps/#dummy_app_name#/config/environment.rb'
|
4
|
+
require 'spec_init'
|
5
|
+
# Run any available migration
|
6
|
+
ActiveRecord::Migrator.migrate 'dummy-apps/#dummy_app_name#/db/migrate'
|
7
|
+
require 'spec_config'
|
@@ -0,0 +1,256 @@
|
|
1
|
+
require "thor/group"
|
2
|
+
require "active_support"
|
3
|
+
require "active_support/version"
|
4
|
+
require "active_support/core_ext/string"
|
5
|
+
|
6
|
+
require "rails/generators"
|
7
|
+
require "rails/generators/rails/app/app_generator"
|
8
|
+
|
9
|
+
require "sugar-high/file"
|
10
|
+
require 'fileutils'
|
11
|
+
|
12
|
+
class DummyApp < Thor::Group
|
13
|
+
include Thor::Actions
|
14
|
+
check_unknown_options!
|
15
|
+
|
16
|
+
def self.source_root
|
17
|
+
@_source_root ||= File.expand_path('../templates', __FILE__)
|
18
|
+
end
|
19
|
+
|
20
|
+
argument :types, :type => :array, :default => [], :desc => "Dummy application names"
|
21
|
+
|
22
|
+
class_option :test_framework, :default => "test_unit", :aliases => "-t",
|
23
|
+
:desc => "Test framework to use. test_unit or rspec."
|
24
|
+
|
25
|
+
class_option :orms, :type => :array, :default => [],
|
26
|
+
:desc => "Datastore frameworks to use. mongoid or active_record."
|
27
|
+
|
28
|
+
|
29
|
+
class_option :tu, :type => :boolean, :default => true,
|
30
|
+
:desc => "Skip testunit generation for dummy apps."
|
31
|
+
|
32
|
+
class_option :js, :type => :boolean, :default => true,
|
33
|
+
:desc => "Skip javascript generation for dummy apps."
|
34
|
+
|
35
|
+
|
36
|
+
desc "Creates a Rails 3 engine with Rakefile, Gemfile and running tests."
|
37
|
+
|
38
|
+
|
39
|
+
def invoke_rails_app_generators
|
40
|
+
if !File.directory? "dummy-apps"
|
41
|
+
say "xdummy must be run from the Rails application root or the test/rspec folder", :red
|
42
|
+
end
|
43
|
+
|
44
|
+
FileUtils.cd "dummy-apps"
|
45
|
+
|
46
|
+
say "Vendoring Rails applications at #{test_path}/dummy-apps"
|
47
|
+
types.each do |type|
|
48
|
+
say "Creating #{type} apps"
|
49
|
+
@current_type = type
|
50
|
+
orms.each do |orm|
|
51
|
+
@current_orm = translate(orm)
|
52
|
+
|
53
|
+
say "Creating dummy Rails app with #{orm}"
|
54
|
+
invoke Rails::Generators::AppGenerator, app_args
|
55
|
+
|
56
|
+
say "Configuring Rails app"
|
57
|
+
change_config_files
|
58
|
+
|
59
|
+
say "Removing unneeded files"
|
60
|
+
remove_uneeded_rails_files
|
61
|
+
|
62
|
+
send orm_config_method if respond_to?(orm_config_method)
|
63
|
+
|
64
|
+
say "Configuring testing framework for #{orm}"
|
65
|
+
set_orm_helpers
|
66
|
+
|
67
|
+
FileUtils.cd(destination_root)
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
protected
|
73
|
+
|
74
|
+
attr_reader :current_orm, :current_type
|
75
|
+
|
76
|
+
def
|
77
|
+
!File.directory? "dummy-apps"
|
78
|
+
|
79
|
+
def translate orm
|
80
|
+
case orm.to_sym
|
81
|
+
when :ar
|
82
|
+
'active_record'
|
83
|
+
else
|
84
|
+
orm
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def dummy_app_path
|
89
|
+
File.expand_path(dummy_path, destination_root)
|
90
|
+
end
|
91
|
+
|
92
|
+
def dummy_app_name
|
93
|
+
name = "dummy-#{current_orm}"
|
94
|
+
name << "-#{current_type}" if current_type && !current_type.blank?
|
95
|
+
name
|
96
|
+
end
|
97
|
+
|
98
|
+
def dummy_path
|
99
|
+
"dummy-apps/#{dummy_app_name}"
|
100
|
+
end
|
101
|
+
|
102
|
+
def orms
|
103
|
+
@orms ||= options[:orms] || ['active_record']
|
104
|
+
end
|
105
|
+
|
106
|
+
def set_orm_helpers
|
107
|
+
say "Configuring testing files for #{current_orm} app"
|
108
|
+
inside test_path do
|
109
|
+
unless File.directory? dummy_app_integration_test_dir
|
110
|
+
empty_directory dummy_app_integration_test_dir
|
111
|
+
end
|
112
|
+
if File.exist?(navigation_file) || File.exist?(underscored_file)
|
113
|
+
say "Moving test files into /#{dummy_app_name}"
|
114
|
+
move_test_files navigation_file, underscored_file
|
115
|
+
inside dummy_app_name do
|
116
|
+
replace_orm_in navigation_file
|
117
|
+
replace_orm_in underscored_file
|
118
|
+
end
|
119
|
+
end
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def dummy_app_integration_test_dir
|
124
|
+
"#{dummy_app_name}/integration"
|
125
|
+
end
|
126
|
+
|
127
|
+
def navigation_file
|
128
|
+
"integration/navigation_#{test_ext}.rb"
|
129
|
+
end
|
130
|
+
|
131
|
+
def underscored_file
|
132
|
+
"#{underscored}_#{test_ext}.rb"
|
133
|
+
end
|
134
|
+
|
135
|
+
def move_test_files *files
|
136
|
+
files.each do |file|
|
137
|
+
FileUtils.mv(file, "#{dummy_app_name}/#{file}") if File.exist?(file)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def replace_orm_in file
|
142
|
+
return if !File.exist?(file)
|
143
|
+
File.replace_content_from file, :where => '#orm#', :with => current_orm
|
144
|
+
end
|
145
|
+
|
146
|
+
def dummy_app_test_path
|
147
|
+
File.join(dummy_app_path, test_path)
|
148
|
+
end
|
149
|
+
|
150
|
+
def orm_config_method
|
151
|
+
"config_#{current_orm}"
|
152
|
+
end
|
153
|
+
|
154
|
+
def config_mongoid
|
155
|
+
return if !current_orm == 'mongoid'
|
156
|
+
|
157
|
+
say "Configuring app for #{current_orm}"
|
158
|
+
inside dummy_app_path do
|
159
|
+
gemfile = 'Gemfile'
|
160
|
+
File.insert_into gemfile, :after => 'gem "sqlite3"' do
|
161
|
+
%q{gem "mongoid"
|
162
|
+
gem "bson_ext"
|
163
|
+
}
|
164
|
+
end
|
165
|
+
File.remove_content_from gemfile, :where => 'gem "sqlite3"'
|
166
|
+
`bundle install`
|
167
|
+
`rails g mongoid:config`
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
def remove_uneeded_rails_files
|
172
|
+
inside dummy_app_path do
|
173
|
+
remove_file ".gitignore"
|
174
|
+
# remove_file "db/seeds.rb"
|
175
|
+
remove_file "doc"
|
176
|
+
# remove_file "Gemfile"
|
177
|
+
remove_file "lib/tasks"
|
178
|
+
remove_file "public/images/rails.png"
|
179
|
+
remove_file "public/index.html"
|
180
|
+
remove_file "public/robots.txt"
|
181
|
+
remove_file "README"
|
182
|
+
remove_file "test"
|
183
|
+
remove_file "vendor"
|
184
|
+
end
|
185
|
+
end
|
186
|
+
|
187
|
+
def change_config_files
|
188
|
+
store_application_definition!
|
189
|
+
template "rails/boot.rb", "#{dummy_app_path}/config/boot.rb", :force => true
|
190
|
+
template "rails/application.rb", "#{dummy_app_path}/config/application.rb", :force => true
|
191
|
+
end
|
192
|
+
|
193
|
+
def app_args
|
194
|
+
args = [dummy_app_path, "-T"] # skip test unit
|
195
|
+
args << "-T" if skip_testunit?
|
196
|
+
args << "-J" if skip_javascript?
|
197
|
+
# skip active record is orm is set to another datastore
|
198
|
+
args << "-O" if !active_record?
|
199
|
+
args
|
200
|
+
end
|
201
|
+
|
202
|
+
def active_record?
|
203
|
+
!current_orm || ['active_record', 'ar'].include?(current_orm)
|
204
|
+
end
|
205
|
+
|
206
|
+
def skip_testunit?
|
207
|
+
options[:tu]
|
208
|
+
end
|
209
|
+
|
210
|
+
def skip_javascript?
|
211
|
+
options[:js]
|
212
|
+
end
|
213
|
+
|
214
|
+
def rspec?
|
215
|
+
options[:test_framework] == "rspec"
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_unit?
|
219
|
+
options[:test_framework] == "test_unit"
|
220
|
+
end
|
221
|
+
|
222
|
+
def test_path
|
223
|
+
rspec? ? "spec" : "test"
|
224
|
+
end
|
225
|
+
alias_method :test_ext, :test_path
|
226
|
+
|
227
|
+
def self.banner
|
228
|
+
self_task.formatted_usage(self, false)
|
229
|
+
end
|
230
|
+
|
231
|
+
def application_definition
|
232
|
+
@application_definition ||= begin
|
233
|
+
contents = File.read(File.expand_path("#{dummy_app_path}/config/application.rb", destination_root))
|
234
|
+
contents[(contents.index("module Dummy"))..-1]
|
235
|
+
end
|
236
|
+
end
|
237
|
+
alias :store_application_definition! :application_definition
|
238
|
+
|
239
|
+
# Cache accessors since we are changing the directory
|
240
|
+
def set_accessors!
|
241
|
+
self.name
|
242
|
+
self.class.source_root
|
243
|
+
end
|
244
|
+
|
245
|
+
def name
|
246
|
+
@name ||= File.basename(destination_root)
|
247
|
+
end
|
248
|
+
|
249
|
+
def camelized
|
250
|
+
@camelized ||= name.camelize
|
251
|
+
end
|
252
|
+
|
253
|
+
def underscored
|
254
|
+
@underscored ||= name.underscore
|
255
|
+
end
|
256
|
+
end
|
metadata
ADDED
@@ -0,0 +1,166 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: multiengine
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.5.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Kristian Mandrup
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2011-05-24 00:00:00.000000000Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: sqlite3
|
16
|
+
requirement: &2156671740 !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: *2156671740
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rspec
|
27
|
+
requirement: &2156671200 !ruby/object:Gem::Requirement
|
28
|
+
none: false
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2.5'
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *2156671200
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rspec-rails
|
38
|
+
requirement: &2156670640 !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '2.5'
|
44
|
+
type: :runtime
|
45
|
+
prerelease: false
|
46
|
+
version_requirements: *2156670640
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: capybara
|
49
|
+
requirement: &2156670060 !ruby/object:Gem::Requirement
|
50
|
+
none: false
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.4'
|
55
|
+
type: :runtime
|
56
|
+
prerelease: false
|
57
|
+
version_requirements: *2156670060
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: thor
|
60
|
+
requirement: &2156669420 !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
62
|
+
requirements:
|
63
|
+
- - ~>
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 0.14.6
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: *2156669420
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rails
|
71
|
+
requirement: &2156668880 !ruby/object:Gem::Requirement
|
72
|
+
none: false
|
73
|
+
requirements:
|
74
|
+
- - ~>
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: 3.1.0.rc1
|
77
|
+
type: :runtime
|
78
|
+
prerelease: false
|
79
|
+
version_requirements: *2156668880
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: rake
|
82
|
+
requirement: &2156668360 !ruby/object:Gem::Requirement
|
83
|
+
none: false
|
84
|
+
requirements:
|
85
|
+
- - ~>
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0.9'
|
88
|
+
type: :runtime
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *2156668360
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: sugar-high
|
93
|
+
requirement: &2156667800 !ruby/object:Gem::Requirement
|
94
|
+
none: false
|
95
|
+
requirements:
|
96
|
+
- - ~>
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '0.4'
|
99
|
+
type: :runtime
|
100
|
+
prerelease: false
|
101
|
+
version_requirements: *2156667800
|
102
|
+
description: Creates a Rails 3 engine configuration with multiple dummy apps and test
|
103
|
+
framework configured and ready to go
|
104
|
+
email: kmandrup@gmail.com
|
105
|
+
executables:
|
106
|
+
- mengine
|
107
|
+
extensions: []
|
108
|
+
extra_rdoc_files:
|
109
|
+
- README.textile
|
110
|
+
files:
|
111
|
+
- Gemfile
|
112
|
+
- MIT-LICENSE
|
113
|
+
- README.textile
|
114
|
+
- Rakefile
|
115
|
+
- bin/mengine
|
116
|
+
- lib/multi_engine.rb
|
117
|
+
- lib/templates/gitignore
|
118
|
+
- lib/templates/rails/application.rb
|
119
|
+
- lib/templates/rails/boot.rb
|
120
|
+
- lib/templates/root/%underscored%.gemspec.tt
|
121
|
+
- lib/templates/root/Gemfile.tt
|
122
|
+
- lib/templates/root/MIT-LICENSE.tt
|
123
|
+
- lib/templates/root/README.rdoc.tt
|
124
|
+
- lib/templates/root/Rakefile.tt
|
125
|
+
- lib/templates/root/lib/%underscored%.rb.tt
|
126
|
+
- lib/templates/spec/spec_config.rb.tt
|
127
|
+
- lib/templates/spec/spec_helper.rb
|
128
|
+
- lib/templates/spec/spec_init.rb.tt
|
129
|
+
- lib/templates/test/%underscored%_test.rb.tt
|
130
|
+
- lib/templates/test/config.rb.tt
|
131
|
+
- lib/templates/test/init.rb.tt
|
132
|
+
- lib/templates/test/integration/navigation_test.rb.tt
|
133
|
+
- lib/templates/test/orm/active_record_helper.rb.tt
|
134
|
+
- lib/templates/test/orm/mongoid_helper.rb.tt
|
135
|
+
- lib/templates/test/support/integration_case.rb
|
136
|
+
- lib/templates/test/test_helper.rb
|
137
|
+
- lib/test_helpers/spec/dummy_spec.rb
|
138
|
+
- lib/test_helpers/spec/integration/navigation_spec.rb
|
139
|
+
- lib/test_helpers/spec/orm/active_record_helper.rb
|
140
|
+
- lib/test_helpers/spec/orm/mongoid_helper.rb
|
141
|
+
- lib/xdummy.rb.inprogress
|
142
|
+
homepage: http://github.com/kristianmandrup/multiapp-engine
|
143
|
+
licenses: []
|
144
|
+
post_install_message:
|
145
|
+
rdoc_options: []
|
146
|
+
require_paths:
|
147
|
+
- lib
|
148
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
149
|
+
none: false
|
150
|
+
requirements:
|
151
|
+
- - ! '>='
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
155
|
+
none: false
|
156
|
+
requirements:
|
157
|
+
- - ! '>='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: '0'
|
160
|
+
requirements: []
|
161
|
+
rubyforge_project:
|
162
|
+
rubygems_version: 1.8.3
|
163
|
+
signing_key:
|
164
|
+
specification_version: 3
|
165
|
+
summary: Creates a Rails 3 engine configuration with multiple dummy apps for testing
|
166
|
+
test_files: []
|