rubyapp 0.1.0 → 0.1.2
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/.gitignore +3 -1
- data/README.markdown +14 -4
- data/VERSION +1 -1
- data/lib/application.thor +37 -27
- data/lib/ruby_app.rb +67 -35
- data/templates/machinist/blueprints.rb +1 -0
- data/templates/object_daddy/model_exemplar.rb +1 -0
- data/templates/{README.markdown → readme/README.markdown} +0 -0
- data/templates/readme/README.rdoc +11 -0
- data/templates/spec/spec_helper.rb.erb +4 -0
- metadata +7 -4
data/.gitignore
CHANGED
data/README.markdown
CHANGED
@@ -36,9 +36,10 @@ Alternatively run it using the binary
|
|
36
36
|
## Options ##
|
37
37
|
|
38
38
|
You can define system wide default options for ruby apps you create (your preferred framework stack) in a <code>~/.rubyapp</code> file.
|
39
|
-
The
|
39
|
+
The <code>~*</code> implies <code>ENV['HOME]</code>, the environment variable "HOME" on any system.
|
40
|
+
Any options you call the program with explicitly will override the defaults in this file.
|
40
41
|
|
41
|
-
The options
|
42
|
+
The options <code>--rspec2, --cucumber, --license, --autotest, and --bundler</code> are all set to true unless explicitly disabled either in the <code>.rubyapp</code> file or using the negation option when rubyapp is run (see negating boolean options below).
|
42
43
|
|
43
44
|
Boolean options:
|
44
45
|
To negate a boolean option prefix it with <code>no-</code>, fx <code>--no-rspec2</code> to disable rspec2 from the project infrastructure creation.
|
@@ -55,22 +56,31 @@ Rubyproject currently supports the following boolean options:
|
|
55
56
|
--binaries
|
56
57
|
--test_unit
|
57
58
|
--shoulda
|
58
|
-
--mock_lib
|
59
59
|
--autotest
|
60
60
|
--heckle
|
61
61
|
--rake
|
62
|
-
--rcov
|
62
|
+
--rcov
|
63
|
+
--timecop
|
64
|
+
--fakefs
|
63
65
|
--require_me
|
64
66
|
</code></pre>
|
65
67
|
|
66
68
|
String options:
|
67
69
|
<code>--mock-lib</code>
|
70
|
+
<code>--factory-lib</code>
|
68
71
|
|
72
|
+
Mock-lib:
|
69
73
|
Valid *mock-lib* values: rspec, mocha, flexmock, rr
|
70
74
|
|
71
75
|
Example:
|
72
76
|
<code>$ rubyapp my-ruby-mock-project --mock-lib flexmock</code>
|
73
77
|
|
78
|
+
Factory-lib:
|
79
|
+
Valid *factory-lib* values: factory_girl, machinist, object_daddy, blueprints
|
80
|
+
|
81
|
+
Example:
|
82
|
+
<code>$ rubyapp my-ruby-mock-project --factory-lib factory_girl</code>
|
83
|
+
|
74
84
|
## Community ##
|
75
85
|
Please feel free to fork this project or provide suggestions for improvements, bug fixes etc.
|
76
86
|
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
data/lib/application.thor
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'active_support/inflector'
|
2
|
+
require 'thor'
|
3
|
+
require 'thor/group'
|
2
4
|
|
3
5
|
module Ruby
|
4
|
-
class App < Thor::Group
|
5
|
-
include Thor::Actions
|
6
|
+
class App < ::Thor::Group
|
7
|
+
include ::Thor::Actions
|
6
8
|
|
7
9
|
desc "Generates a ruby application"
|
8
10
|
|
@@ -18,15 +20,18 @@ module Ruby
|
|
18
20
|
class_option :test_unit, :type => :boolean, :desc => "Use Test-unit"
|
19
21
|
class_option :shoulda, :type => :boolean, :desc => "Use Shoulda"
|
20
22
|
|
21
|
-
class_option :mock_lib, :type => :string, :desc => "
|
23
|
+
class_option :mock_lib, :type => :string, :desc => "Mocking framework to be used"
|
22
24
|
class_option :autotest, :type => :boolean, :desc => "Use autotest"
|
23
25
|
class_option :heckle, :type => :boolean, :desc => "Use Heckle"
|
24
26
|
|
25
27
|
class_option :rake, :type => :boolean, :desc => "Configure Rakefile for Rake"
|
26
28
|
class_option :jeweler, :type => :boolean, :desc => "Use Jeweler"
|
27
29
|
class_option :rcov, :type => :boolean, :desc => "Use RCov"
|
30
|
+
class_option :fakefs, :type => :boolean, :desc => "Use FakeFS to fake the File system"
|
28
31
|
|
29
|
-
class_option :
|
32
|
+
class_option :readme, :type => :string, :desc => "README markup language to be used"
|
33
|
+
|
34
|
+
class_option :require_me, :type => :boolean, :desc => "Use require-me gem for require DSL"
|
30
35
|
|
31
36
|
class_option :bundler, :type => :boolean, :desc => "Create a Gemfile and configure project to use Bundler"
|
32
37
|
|
@@ -61,7 +66,9 @@ module Ruby
|
|
61
66
|
|
62
67
|
def default_settings
|
63
68
|
@project_options ||= options.dup
|
64
|
-
[:rspec2, :cucumber, :license, :autotest, :bundler].each{|key| project_options[key] ||= true}
|
69
|
+
[:rspec2, :cucumber, :license, :autotest, :bundler].each{|key| project_options[key] ||= true}
|
70
|
+
project_options[:mock_lib] ||= 'mocha'
|
71
|
+
project_options[:readme] ||= 'markdown'
|
65
72
|
end
|
66
73
|
|
67
74
|
def create_root
|
@@ -72,8 +79,10 @@ module Ruby
|
|
72
79
|
|
73
80
|
def install_gems
|
74
81
|
return nil if !project_options[:install_gems]
|
82
|
+
gems = []
|
75
83
|
gems << "heckle" if project_options[:heckle]
|
76
84
|
gems << "rcov" if project_options[:rcov]
|
85
|
+
gems << "fakefs" if project_options[:fakefs]
|
77
86
|
gems << "cucumber" if project_options[:cucumber]
|
78
87
|
gems << "ZenTest autotest-growl autotest-fsevent" if project_options[:autotest]
|
79
88
|
gems << "#{project_options[:mock_lib]}"
|
@@ -88,28 +97,24 @@ module Ruby
|
|
88
97
|
run "gem install #{gems.join(' ')}"
|
89
98
|
end
|
90
99
|
|
91
|
-
def main_runner
|
100
|
+
def main_runner
|
101
|
+
say "rubyapp v.0.1.1"
|
92
102
|
if project_options[:jeweler]
|
93
103
|
run "jeweler #{appname}"
|
94
104
|
else
|
95
105
|
create_app
|
96
106
|
end
|
97
|
-
create_gemfile if !skip?
|
98
|
-
create_binaries if !skip?
|
99
|
-
configure_cucumber if !skip?
|
107
|
+
create_gemfile if !skip? :bundler, 'Use Bundler?'
|
108
|
+
create_binaries if !skip? :binaries, 'Create binaries?'
|
109
|
+
configure_cucumber if !skip? :cucumber, 'Use Cucumber?'
|
100
110
|
configure_rspec2 if project_options[:rspec2]
|
101
|
-
configure_autotest if !skip?
|
111
|
+
configure_autotest if !skip? :autotest, 'Use autotest?'
|
102
112
|
configure_shoulda if project_options[:shoulda]
|
103
|
-
configure_test_unit if project_options[:test_unit]
|
113
|
+
configure_test_unit if project_options[:test_unit]
|
104
114
|
create_gitignore
|
105
115
|
create_readme
|
106
116
|
create_signatures if project_options[:signatures]
|
107
|
-
if skip?
|
108
|
-
say "Shame on you…", :red
|
109
|
-
return
|
110
|
-
else
|
111
|
-
copy_licence
|
112
|
-
end
|
117
|
+
copy_licence if !skip? :license, 'Use MIT license?'
|
113
118
|
autotest_feature_notice if project_options[:cucumber]
|
114
119
|
end
|
115
120
|
|
@@ -136,22 +141,22 @@ module Ruby
|
|
136
141
|
def create_binaries
|
137
142
|
empty_directory 'bin'
|
138
143
|
inside "bin" do
|
139
|
-
template
|
140
|
-
template
|
144
|
+
template 'binary', "#{app_name}"
|
145
|
+
template 'binary.bat', "#{app_name}.bat"
|
141
146
|
end
|
142
147
|
end
|
143
148
|
|
144
149
|
def configure_cucumber
|
145
150
|
empty_directory 'features'
|
146
151
|
inside 'features' do
|
147
|
-
template
|
152
|
+
template 'app_name.feature.erb', "#{app_name}.feature"
|
148
153
|
empty_directory 'step_definitions'
|
149
154
|
inside 'step_definitions' do
|
150
|
-
template
|
155
|
+
template 'app_name_steps.erb', "#{app_name}_steps.rb"
|
151
156
|
end
|
152
157
|
empty_directory 'support'
|
153
158
|
inside 'support' do
|
154
|
-
template
|
159
|
+
template 'env.rb.erb', 'env.rb'
|
155
160
|
end
|
156
161
|
end
|
157
162
|
end
|
@@ -174,23 +179,28 @@ module Ruby
|
|
174
179
|
def configure_shoulda
|
175
180
|
empty_directory 'shoulda'
|
176
181
|
inside 'shoulda' do
|
177
|
-
template
|
182
|
+
template 'test_app_name.rb.erb', "test_#{app_name}.rb"
|
178
183
|
end
|
179
184
|
end
|
180
185
|
|
181
186
|
def configure_test_unit
|
182
187
|
empty_directory 'test'
|
183
188
|
inside 'test' do
|
184
|
-
template
|
189
|
+
template 'test_app_name.rb.erb', "test_#{app_name}.rb"
|
185
190
|
end
|
186
191
|
end
|
187
192
|
|
188
193
|
def create_gitignore
|
189
|
-
template
|
194
|
+
template 'gitignore', '.gitignore'
|
190
195
|
end
|
191
196
|
|
192
|
-
def create_readme
|
193
|
-
|
197
|
+
def create_readme
|
198
|
+
case options[:readme]
|
199
|
+
when 'rdoc'
|
200
|
+
template 'readme/README.rdoc', 'README.rdoc'
|
201
|
+
else
|
202
|
+
template 'readme/README.markdown', 'README.markdown'
|
203
|
+
end
|
194
204
|
end
|
195
205
|
|
196
206
|
|
data/lib/ruby_app.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'active_support/inflector'
|
2
|
+
require 'thor'
|
3
|
+
require 'thor/group'
|
2
4
|
|
3
5
|
module Ruby
|
4
|
-
class App < Thor::Group
|
5
|
-
include Thor::Actions
|
6
|
+
class App < ::Thor::Group
|
7
|
+
include ::Thor::Actions
|
6
8
|
|
7
9
|
desc "Generates a ruby application"
|
8
10
|
|
@@ -18,15 +20,22 @@ module Ruby
|
|
18
20
|
class_option :test_unit, :type => :boolean, :desc => "Use Test-unit"
|
19
21
|
class_option :shoulda, :type => :boolean, :desc => "Use Shoulda"
|
20
22
|
|
21
|
-
class_option :mock_lib, :type => :string, :desc => "
|
23
|
+
class_option :mock_lib, :type => :string, :desc => "Mocking framework to be used"
|
24
|
+
|
25
|
+
|
22
26
|
class_option :autotest, :type => :boolean, :desc => "Use autotest"
|
23
27
|
class_option :heckle, :type => :boolean, :desc => "Use Heckle"
|
24
28
|
|
25
29
|
class_option :rake, :type => :boolean, :desc => "Configure Rakefile for Rake"
|
26
30
|
class_option :jeweler, :type => :boolean, :desc => "Use Jeweler"
|
27
31
|
class_option :rcov, :type => :boolean, :desc => "Use RCov"
|
32
|
+
class_option :fakefs, :type => :boolean, :desc => "Use FakeFS to fake the File system"
|
33
|
+
class_option :spies, :type => :boolean, :desc => "Use Rspec-spies"
|
34
|
+
class_option :timecop, :type => :boolean, :desc => "Use timecop gem"
|
28
35
|
|
29
|
-
class_option :
|
36
|
+
class_option :readme, :type => :string, :desc => "README markup language to be used"
|
37
|
+
|
38
|
+
class_option :require_me, :type => :boolean, :desc => "Use require-me gem for require DSL"
|
30
39
|
|
31
40
|
class_option :bundler, :type => :boolean, :desc => "Create a Gemfile and configure project to use Bundler"
|
32
41
|
|
@@ -61,7 +70,9 @@ module Ruby
|
|
61
70
|
|
62
71
|
def default_settings
|
63
72
|
@project_options ||= options.dup
|
64
|
-
[:rspec2, :cucumber, :license, :autotest, :bundler].each{|key| project_options[key] ||= true}
|
73
|
+
[:rspec2, :cucumber, :license, :autotest, :bundler].each{|key| project_options[key] ||= true}
|
74
|
+
project_options[:mock_lib] ||= 'mocha'
|
75
|
+
project_options[:readme] ||= 'markdown'
|
65
76
|
end
|
66
77
|
|
67
78
|
def create_root
|
@@ -72,8 +83,10 @@ module Ruby
|
|
72
83
|
|
73
84
|
def install_gems
|
74
85
|
return nil if !project_options[:install_gems]
|
86
|
+
gems = []
|
75
87
|
gems << "heckle" if project_options[:heckle]
|
76
88
|
gems << "rcov" if project_options[:rcov]
|
89
|
+
gems << "fakefs" if project_options[:fakefs]
|
77
90
|
gems << "cucumber" if project_options[:cucumber]
|
78
91
|
gems << "ZenTest autotest-growl autotest-fsevent" if project_options[:autotest]
|
79
92
|
gems << "#{project_options[:mock_lib]}"
|
@@ -82,34 +95,32 @@ module Ruby
|
|
82
95
|
gems << "shoulda" if project_options[:shoulda]
|
83
96
|
gems << "test-unit" if project_options[:test_unit]
|
84
97
|
gems << "rake" if project_options[:rake]
|
85
|
-
gems << "jeweler" if project_options[:jeweler]
|
86
|
-
|
98
|
+
gems << "jeweler" if project_options[:jeweler]
|
99
|
+
gems << "timecop" if project_options[:timecop]
|
100
|
+
|
101
|
+
gems << "#{project_options[:factory_lib]}"
|
87
102
|
run "gem install rspec --pre" if project_options[:rspec]
|
88
103
|
run "gem install #{gems.join(' ')}"
|
89
104
|
end
|
90
105
|
|
91
|
-
def main_runner
|
106
|
+
def main_runner
|
107
|
+
say "rubyapp v.0.1.1"
|
92
108
|
if project_options[:jeweler]
|
93
109
|
run "jeweler #{appname}"
|
94
110
|
else
|
95
111
|
create_app
|
96
112
|
end
|
97
|
-
create_gemfile if !skip?
|
98
|
-
create_binaries if !skip?
|
99
|
-
configure_cucumber if !skip?
|
113
|
+
create_gemfile if !skip? :bundler, 'Use Bundler?'
|
114
|
+
create_binaries if !skip? :binaries, 'Create binaries?'
|
115
|
+
configure_cucumber if !skip? :cucumber, 'Use Cucumber?'
|
100
116
|
configure_rspec2 if project_options[:rspec2]
|
101
|
-
configure_autotest if !skip?
|
117
|
+
configure_autotest if !skip? :autotest, 'Use autotest?'
|
102
118
|
configure_shoulda if project_options[:shoulda]
|
103
119
|
configure_test_unit if project_options[:test_unit]
|
104
120
|
create_gitignore
|
105
121
|
create_readme
|
106
122
|
create_signatures if project_options[:signatures]
|
107
|
-
if skip?
|
108
|
-
say "Shame on you…", :red
|
109
|
-
return
|
110
|
-
else
|
111
|
-
copy_licence
|
112
|
-
end
|
123
|
+
copy_licence if !skip? :license, 'Use MIT license?'
|
113
124
|
autotest_feature_notice if project_options[:cucumber]
|
114
125
|
end
|
115
126
|
|
@@ -136,22 +147,22 @@ module Ruby
|
|
136
147
|
def create_binaries
|
137
148
|
empty_directory 'bin'
|
138
149
|
inside "bin" do
|
139
|
-
template
|
140
|
-
template
|
150
|
+
template 'binary', "#{app_name}"
|
151
|
+
template 'binary.bat', "#{app_name}.bat"
|
141
152
|
end
|
142
153
|
end
|
143
154
|
|
144
155
|
def configure_cucumber
|
145
156
|
empty_directory 'features'
|
146
157
|
inside 'features' do
|
147
|
-
template
|
158
|
+
template 'app_name.feature.erb', "#{app_name}.feature"
|
148
159
|
empty_directory 'step_definitions'
|
149
160
|
inside 'step_definitions' do
|
150
|
-
template
|
161
|
+
template 'app_name_steps.erb', "#{app_name}_steps.rb"
|
151
162
|
end
|
152
163
|
empty_directory 'support'
|
153
164
|
inside 'support' do
|
154
|
-
template
|
165
|
+
template 'env.rb.erb', 'env.rb'
|
155
166
|
end
|
156
167
|
end
|
157
168
|
end
|
@@ -164,6 +175,8 @@ module Ruby
|
|
164
175
|
empty_directory "#{app_name}"
|
165
176
|
template 'spec_helper.rb.erb', "spec_helper.rb"
|
166
177
|
template 'app_name/sample_spec.rb.erb', "#{app_name}/#{app_name}_spec.rb"
|
178
|
+
|
179
|
+
configure_factory_lib 'spec'
|
167
180
|
end
|
168
181
|
end
|
169
182
|
|
@@ -174,23 +187,43 @@ module Ruby
|
|
174
187
|
def configure_shoulda
|
175
188
|
empty_directory 'shoulda'
|
176
189
|
inside 'shoulda' do
|
177
|
-
template
|
190
|
+
template 'test_app_name.rb.erb', "test_#{app_name}.rb"
|
178
191
|
end
|
179
192
|
end
|
180
|
-
|
193
|
+
|
181
194
|
def configure_test_unit
|
182
195
|
empty_directory 'test'
|
183
196
|
inside 'test' do
|
184
|
-
template
|
197
|
+
template 'test_app_name.rb.erb', "test_#{app_name}.rb"
|
198
|
+
|
199
|
+
configure_factory_lib 'test'
|
185
200
|
end
|
186
201
|
end
|
202
|
+
def configure_factory_lib(test_dir)
|
203
|
+
# factory lib setup
|
204
|
+
case project_options[:factory_lib]
|
205
|
+
when 'factory_girl'
|
206
|
+
empty_directory 'factories'
|
207
|
+
when 'machinist'
|
208
|
+
copy_file 'machinist/blueprints.rb', "#{test_dir}/blueprints.rb"
|
209
|
+
when 'object_daddy'
|
210
|
+
copy_file 'object_daddy/model_exemplar.rb', "#{test_dir}/exemplars/model_exemplar.rb"
|
211
|
+
when 'blueprints'
|
212
|
+
empty_directory 'blueprint'
|
213
|
+
end
|
214
|
+
end
|
187
215
|
|
188
216
|
def create_gitignore
|
189
|
-
template
|
217
|
+
template 'gitignore', '.gitignore'
|
190
218
|
end
|
191
219
|
|
192
|
-
def create_readme
|
193
|
-
|
220
|
+
def create_readme
|
221
|
+
case project_options[:readme]
|
222
|
+
when 'rdoc'
|
223
|
+
template 'readme/README.rdoc', 'README.rdoc'
|
224
|
+
else
|
225
|
+
template 'readme/README.markdown', 'README.markdown'
|
226
|
+
end
|
194
227
|
end
|
195
228
|
|
196
229
|
|
@@ -214,11 +247,10 @@ module Ruby
|
|
214
247
|
say "autotest notice:"
|
215
248
|
say "To avoid cucumber features being run, start autotest like this"
|
216
249
|
say "$ AUTOFEATURE=false autotest"
|
217
|
-
end
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
end
|
250
|
+
end
|
251
|
+
|
252
|
+
def skip?(key, question)
|
253
|
+
!project_options[key] || !yes?(question)
|
254
|
+
end
|
223
255
|
end
|
224
256
|
end
|
@@ -0,0 +1 @@
|
|
1
|
+
# Machinist bluerprints here
|
@@ -0,0 +1 @@
|
|
1
|
+
# Object Daddy: model_exemplar
|
File without changes
|
@@ -3,6 +3,10 @@
|
|
3
3
|
<%= "require 'require-me'" if project_options[:require_me] %>
|
4
4
|
require 'rspec'
|
5
5
|
require 'rspec/autorun'
|
6
|
+
<%= "require 'fakefs'" if project_options[:fakefs] %>
|
7
|
+
<%= "require 'rspec-spies'" if project_options[:spies] %>
|
8
|
+
<%= "require 'timecop'" if project_options[:timecop] %>
|
9
|
+
|
6
10
|
require '<%= app_name %>'
|
7
11
|
|
8
12
|
RSpec.configure do |config|
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 2
|
9
|
+
version: 0.1.2
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Kristian Mandrup
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-06-
|
17
|
+
date: 2010-06-07 00:00:00 -04:00
|
18
18
|
default_executable: rubyapp
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -36,7 +36,6 @@ files:
|
|
36
36
|
- lib/ruby_app.rb
|
37
37
|
- templates/Gemfile
|
38
38
|
- templates/MITLICENSE
|
39
|
-
- templates/README.markdown
|
40
39
|
- templates/_signatures/APP.RUBY.signature
|
41
40
|
- templates/autotest.options
|
42
41
|
- templates/autotest/discover.rb
|
@@ -50,6 +49,10 @@ files:
|
|
50
49
|
- templates/gitignore
|
51
50
|
- templates/lib/app_entrypoint.erb
|
52
51
|
- templates/lib/app_name.rb.erb
|
52
|
+
- templates/machinist/blueprints.rb
|
53
|
+
- templates/object_daddy/model_exemplar.rb
|
54
|
+
- templates/readme/README.markdown
|
55
|
+
- templates/readme/README.rdoc
|
53
56
|
- templates/shoulda/test_app_name.rb.erb
|
54
57
|
- templates/spec/app_name/sample_spec.rb.erb
|
55
58
|
- templates/spec/rspec.options
|