rails_app_generator 0.0.6 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/boot.rb +1 -0
  3. data/.builders/generators/project-plan.rb +47 -0
  4. data/CHANGELOG.md +24 -0
  5. data/after_templates/README.md +3 -0
  6. data/after_templates/___base_template.rb +1 -0
  7. data/after_templates/___r7_hotwire.rb +1 -0
  8. data/after_templates/rag_bootstrap/application-yield.html.erb +5 -0
  9. data/after_templates/rag_bootstrap/application.html.erb +4 -0
  10. data/after_templates/rag_bootstrap/component-cards-fancy.css +84 -0
  11. data/after_templates/rag_bootstrap/component-cards-fancy.html +80 -0
  12. data/after_templates/rag_bootstrap/component-cards-staff.css +90 -0
  13. data/after_templates/rag_bootstrap/component-cards-staff.html +140 -0
  14. data/after_templates/rag_bootstrap/component-cards-styled.html +31 -0
  15. data/after_templates/rag_bootstrap/component-footer.html +34 -0
  16. data/after_templates/rag_bootstrap/component-hero.html +15 -0
  17. data/after_templates/rag_bootstrap/component-nav.html +36 -0
  18. data/after_templates/rag_bootstrap/custom-bootstrap-import.scss +5 -0
  19. data/after_templates/rag_bootstrap/custom-using-css.css +3 -0
  20. data/after_templates/rag_bootstrap/custom-using-scss.scss +5 -0
  21. data/after_templates/rag_bootstrap/manifest.js +3 -0
  22. data/after_templates/rag_bootstrap.rb +1 -0
  23. data/after_templates/rag_simple.rb +25 -0
  24. data/after_templates/rag_tailwind/component-cta.html +17 -0
  25. data/after_templates/rag_tailwind/component-faq.html +151 -0
  26. data/after_templates/rag_tailwind/component-footer.html +73 -0
  27. data/after_templates/rag_tailwind/component-hero.html +25 -0
  28. data/after_templates/rag_tailwind/component-nav.html +101 -0
  29. data/after_templates/rag_tailwind/component-section-begin.html +0 -0
  30. data/after_templates/rag_tailwind/component-section-end.html +0 -0
  31. data/after_templates/rag_tailwind.rb +76 -0
  32. data/docs/project-plan/project.drawio +56 -0
  33. data/docs/project-plan/project_done.svg +3 -0
  34. data/docs/project-plan/project_in_progress.svg +3 -0
  35. data/docs/project-plan/project_todo.svg +3 -0
  36. data/docs/project-plan.md +24 -0
  37. data/exe/rag +41 -0
  38. data/lib/rails_app_generator/add_on.rb +0 -1
  39. data/lib/rails_app_generator/app_builder.rb +5 -3
  40. data/lib/rails_app_generator/app_generator.rb +72 -13
  41. data/lib/rails_app_generator/notes/a2.txt +14 -1
  42. data/lib/rails_app_generator/options/rails_options.rb +1 -1
  43. data/lib/rails_app_generator/version.rb +1 -1
  44. data/lib/rails_app_generator.rb +3 -3
  45. data/package-lock.json +2 -2
  46. data/package.json +1 -1
  47. data/profiles/rag-add-some-pages.json +11 -0
  48. data/profiles/rag-bootstrap.json +12 -0
  49. data/profiles/rag-simple.json +11 -0
  50. data/profiles/rag-tailwind.json +12 -0
  51. data/templates/README.md.erb +43 -0
  52. metadata +56 -4
  53. data/exe/rails_app_generator +0 -51
data/exe/rag ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'pathname'
5
+ require 'pry'
6
+
7
+ source_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../lib")
8
+ $LOAD_PATH << source_path
9
+
10
+ require 'rails_app_generator'
11
+
12
+ if ARGV.empty?
13
+ puts 'Please provide a profile for the new application'
14
+ puts
15
+ puts 'See --help for more info'
16
+ exit 0
17
+ elsif %w[-v --version].include? ARGV[0]
18
+ puts RailsAppGenerator::VERSION
19
+ exit 0
20
+ end
21
+
22
+ profile_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../profiles")
23
+ profile_name = ARGV[0]
24
+ profile_name += '.json' unless profile_name.end_with?('.json')
25
+ profile_file = File.join(profile_path, profile_name)
26
+
27
+ if File.exist?(profile_file)
28
+ puts "Using profile #{profile_file}"
29
+
30
+ profile = JSON.parse(File.read(profile_file), symbolize_names: true)
31
+ args = profile[:args]
32
+ opts = profile[:opts]
33
+ rails_options = RailsAppGenerator::RailsOptions.new(opts)
34
+
35
+ instance = RailsAppGenerator::Starter.new(args)
36
+ FileUtils.rm_rf(instance.target_path)
37
+ instance.start(rails_options)
38
+ else
39
+ puts "Profile #{profile_file} not found"
40
+ exit 1
41
+ end
@@ -66,7 +66,6 @@ module RailsAppGenerator
66
66
  protected
67
67
 
68
68
  def depends_on(*addon)
69
- puts addon
70
69
  @dependencies = addon.map(&:to_sym)
71
70
  end
72
71
  end
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
+ # The application builder allows you to override elements of the application
5
+ # generator without being forced to reverse the operations of the default generator.
4
6
  class AppBuilder < Rails::AppBuilder
5
7
  # def bin
6
8
  # super
@@ -13,9 +15,9 @@ module RailsAppGenerator
13
15
  # RailsAppGenerator::AddOns::Credentials.apply
14
16
  # end
15
17
 
16
- # def readme
17
- # template 'README.md.erb', 'README.md'
18
- # end
18
+ def readme
19
+ template 'README.md.erb', 'README.md'
20
+ end
19
21
 
20
22
  # def ruby_version
21
23
  # RailsAppGenerator::AddOns::RubyVersion.new(Context.new(options)).apply
@@ -22,8 +22,8 @@ module RailsAppGenerator
22
22
  class_option :add_services , type: :boolean, default: false
23
23
  class_option :add_sidekiq , type: :boolean, default: false
24
24
  class_option :add_views , type: :boolean, default: false
25
- class_option :add_errors , type: :boolean, default: false
26
- class_option :add_scaffold , type: :boolean, default: false
25
+ class_option :add_errors , type: :boolean, default: false
26
+ class_option :add_scaffold , type: :boolean, default: false
27
27
  class_option :add_factory_bot , type: :boolean, default: false
28
28
  class_option :add_shoulda , type: :boolean, default: false
29
29
 
@@ -141,15 +141,15 @@ module RailsAppGenerator
141
141
  add_if(:rubocop)
142
142
  end
143
143
 
144
- def create_test_files
145
- return if options[:skip_test]
144
+ # def create_test_files
145
+ # return if options[:skip_test]
146
146
 
147
- super if options[:test] == 'minitest'
147
+ # super if options[:test] == 'minitest'
148
148
 
149
- # puts options[:testing_framework]
149
+ # # puts options[:testing_framework]
150
150
 
151
- # add(:rspec) if options[:testing_framework] == 'rspec'
152
- end
151
+ # # add(:rspec) if options[:testing_framework] == 'rspec'
152
+ # end
153
153
 
154
154
  def finish_template
155
155
  puts 'finish template'
@@ -169,15 +169,46 @@ module RailsAppGenerator
169
169
  # invoke :rails_customization
170
170
  super
171
171
  end
172
+
172
173
  no_commands do
174
+ # USED BY AFTER_TEMPLATE
175
+ def gac(message)
176
+ return unless active?(:git)
177
+
178
+ git add: '.'
179
+ git commit: " -m '#{message}'"
180
+ end
181
+
182
+ def add_controller(name, *args)
183
+ generate(:controller, name, *args)
184
+ end
185
+
186
+ def add_scaffold(name, *args)
187
+ generate(:scaffold, name, *args)
188
+ end
189
+
190
+ def read_template(template_file)
191
+ path = find_in_source_paths(template_file)
192
+
193
+ File.read(path)
194
+ end
195
+
196
+ def join_templates(*template_files, join: "\n\n")
197
+ template_files.map { |template_file| read_template(template_file) }.join(join)
198
+ end
199
+
200
+ # Local template path is handy when you want template files used when working with the --template flag
201
+ attr_accessor :local_template_path
202
+
173
203
  def source_paths
174
- [
175
- context.rails_override_template_path,
176
- context.rails_template_path
177
- ]
204
+ paths = local_template_path ? [local_template_path] : []
205
+ paths << context.rails_override_template_path
206
+ paths << context.rails_template_path
207
+ paths
178
208
  end
179
209
 
180
210
  # Context wraps the configured options and can be made available to addons
211
+ # TODO: should I add local_template_path to the context?
181
212
  def context
182
213
  @context ||= Context.new(
183
214
  self.class.rails_template_path,
@@ -201,12 +232,40 @@ module RailsAppGenerator
201
232
  add(addon) if options[option_name]
202
233
  end
203
234
 
235
+ def skip_flag?(option_name)
236
+ value = options["skip_#{option_name}".to_sym]
237
+
238
+ return false if value.nil?
239
+
240
+ value == true
241
+ end
242
+
243
+ def add_flag?(option_name)
244
+ value = options["add_#{option_name}".to_sym]
245
+
246
+ return false if value.nil?
247
+
248
+ value == true
249
+ end
250
+
251
+ def active?(option_name)
252
+ add_flag?(option_name) || !skip_flag?(option_name)
253
+ end
254
+
204
255
  def uses?(addon)
205
- return false if options["skip_#{addon}".to_sym]
256
+ return false unless active?(addon)
206
257
 
207
258
  addon = AddOn.get(addon)
208
259
  Dependencies.new(addon, context).satisfied?
209
260
  end
210
261
  end
262
+
263
+ protected
264
+
265
+ # rubocop:disable Naming/AccessorMethodName
266
+ def get_builder_class
267
+ RailsAppGenerator::AppBuilder
268
+ end
269
+ # rubocop:enable Naming/AccessorMethodName
211
270
  end
212
271
  end
@@ -7,7 +7,6 @@ create Gemfile
7
7
  create app
8
8
  create app/assets/config/manifest.js
9
9
  create app/assets/stylesheets/application.css
10
- create app/bob/boblike.txt
11
10
  create app/channels/application_cable/channel.rb
12
11
  create app/channels/application_cable/connection.rb
13
12
  create app/controllers/application_controller.rb
@@ -75,6 +74,20 @@ create tmp/cache
75
74
  create tmp/cache/assets
76
75
  create vendor
77
76
  create vendor/.keep
77
+ create test/fixtures/files
78
+ create test/fixtures/files/.keep
79
+ create test/controllers
80
+ create test/controllers/.keep
81
+ create test/mailers
82
+ create test/mailers/.keep
83
+ create test/models
84
+ create test/models/.keep
85
+ create test/helpers
86
+ create test/helpers/.keep
87
+ create test/integration
88
+ create test/integration/.keep
89
+ create test/channels/application_cable/connection_test.rb
90
+ create test/test_helper.rb
78
91
  create test/system
79
92
  create test/system/.keep
80
93
  create test/application_system_test_case.rb
@@ -5,7 +5,7 @@ module RailsAppGenerator
5
5
  # NOTE: Currently you need to register new options in two places
6
6
  # here and in lib/rails_app_generator/app_generator.rb
7
7
 
8
- future_option :template , type: :string # , desc: "Path to some #{name} template (can be a filesystem path or URL)"
8
+ register_option :template , type: :string # , desc: "Path to some #{name} template (can be a filesystem path or URL)"
9
9
  future_option :database , type: :string , default: 'sqlite3' # , desc: "Preconfigure for selected database (options: #{DATABASES.join('/')})"
10
10
  register_option :skip_git , type: :boolean, default: false # , desc: "Skip .gitignore file"
11
11
  future_option :skip_keeps , type: :boolean, default: false # , desc: "Skip source control .keep files"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.0.6'
4
+ VERSION = '0.0.9'
5
5
  end
@@ -17,9 +17,9 @@ require 'rails_app_generator/options/map_option_boolean_flag'
17
17
  require 'rails_app_generator/options/build_option'
18
18
  require 'rails_app_generator/options/options_builder'
19
19
  require 'rails_app_generator/options/rails_options'
20
- require_relative 'rails_app_generator/context'
21
- require_relative 'rails_app_generator/dependencies'
22
- require_relative 'rails_app_generator/add_on'
20
+ require 'rails_app_generator/context'
21
+ require 'rails_app_generator/dependencies'
22
+ require 'rails_app_generator/add_on'
23
23
  Dir[File.join(__dir__, 'rails_app_generator', 'addons', '*.rb')].sort.each { |file| require file }
24
24
  require 'rails_app_generator/app_builder'
25
25
  require 'rails_app_generator/app_generator'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.6",
3
+ "version": "0.0.9",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.0.6",
9
+ "version": "0.0.9",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.6",
3
+ "version": "0.0.9",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -0,0 +1,11 @@
1
+ {
2
+ "args": {
3
+ "app_path": "add-some-pages",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_bundle": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/test.rb"
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "args": {
3
+ "app_path": "bootstrap",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_bootstrap.rb",
10
+ "css": "bootstrap"
11
+ }
12
+ }
@@ -0,0 +1,11 @@
1
+ {
2
+ "args": {
3
+ "app_path": "simple",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_bundle": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_simple.rb"
10
+ }
11
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "args": {
3
+ "app_path": "tailwind",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_git": true,
8
+ "skip_test": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_tailwind.rb",
10
+ "css": "tailwind"
11
+ }
12
+ }
@@ -0,0 +1,43 @@
1
+ # <%= app_name.humanize %>
2
+
3
+ ## Running your App
4
+
5
+ The simplest way to start this up is by using [docker-compose](https://docs.docker.com/compose/):
6
+
7
+ ```bash
8
+ docker-compose up
9
+ ```
10
+
11
+ ```
12
+ rails db:setup
13
+ rails db:migrate
14
+ rails server
15
+ ```
16
+
17
+ Open your browser on [localhost:3000](http://localhost:3000).
18
+
19
+ ## Development
20
+
21
+ This app was generated using [Schienenzeppelin](https://github.com/hschne/schienenzeppelin) - there are tons of little tweaks to simplify your development workflow.
22
+
23
+ For more details refer to the [Documentation](https://github.com/hschne/schienenzeppelin)
24
+
25
+ ## Deployment
26
+
27
+ Deploy this application using Capistrano. Make sure you have a server set up and edit [deploy.rb](./config/deploy.rb) and [config/production.rb](./config/deploy/production.rb).
28
+
29
+ ``` ruby
30
+ # deploy.rb
31
+ set :repo_url, "git@github.com:user/your-project.git"
32
+
33
+ # production.rb
34
+ server "myserver.com", user: "deploy", roles: %w{app db web}
35
+ ```
36
+
37
+ Then run:
38
+
39
+ ```bash
40
+ cap production deploy
41
+ ```
42
+
43
+ For more information on how to prepare a server for deployment you can follow [this guide](https://gorails.com/deploy/ubuntu/20.04).
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_app_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.6
4
+ version: 0.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-21 00:00:00.000000000 Z
11
+ date: 2022-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: tailwindcss-rails
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: turbo-rails
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -112,13 +126,14 @@ description: " Create new Rails Application with custom opinions\n"
112
126
  email:
113
127
  - david@ideasmen.com.au
114
128
  executables:
115
- - rails_app_generator
129
+ - rag
116
130
  extensions: []
117
131
  extra_rdoc_files: []
118
132
  files:
119
133
  - ".builders/_.rb"
120
134
  - ".builders/boot.rb"
121
135
  - ".builders/generators/01-bootstrap.rb"
136
+ - ".builders/generators/project-plan.rb"
122
137
  - ".releaserc.json"
123
138
  - ".rspec"
124
139
  - ".rubocop.yml"
@@ -130,9 +145,41 @@ files:
130
145
  - LICENSE.txt
131
146
  - README.md
132
147
  - Rakefile
148
+ - after_templates/README.md
149
+ - after_templates/___base_template.rb
150
+ - after_templates/___r7_hotwire.rb
151
+ - after_templates/rag_bootstrap.rb
152
+ - after_templates/rag_bootstrap/application-yield.html.erb
153
+ - after_templates/rag_bootstrap/application.html.erb
154
+ - after_templates/rag_bootstrap/component-cards-fancy.css
155
+ - after_templates/rag_bootstrap/component-cards-fancy.html
156
+ - after_templates/rag_bootstrap/component-cards-staff.css
157
+ - after_templates/rag_bootstrap/component-cards-staff.html
158
+ - after_templates/rag_bootstrap/component-cards-styled.html
159
+ - after_templates/rag_bootstrap/component-footer.html
160
+ - after_templates/rag_bootstrap/component-hero.html
161
+ - after_templates/rag_bootstrap/component-nav.html
162
+ - after_templates/rag_bootstrap/custom-bootstrap-import.scss
163
+ - after_templates/rag_bootstrap/custom-using-css.css
164
+ - after_templates/rag_bootstrap/custom-using-scss.scss
165
+ - after_templates/rag_bootstrap/manifest.js
166
+ - after_templates/rag_simple.rb
167
+ - after_templates/rag_tailwind.rb
168
+ - after_templates/rag_tailwind/component-cta.html
169
+ - after_templates/rag_tailwind/component-faq.html
170
+ - after_templates/rag_tailwind/component-footer.html
171
+ - after_templates/rag_tailwind/component-hero.html
172
+ - after_templates/rag_tailwind/component-nav.html
173
+ - after_templates/rag_tailwind/component-section-begin.html
174
+ - after_templates/rag_tailwind/component-section-end.html
133
175
  - bin/console
134
176
  - bin/setup
135
- - exe/rails_app_generator
177
+ - docs/project-plan.md
178
+ - docs/project-plan/project.drawio
179
+ - docs/project-plan/project_done.svg
180
+ - docs/project-plan/project_in_progress.svg
181
+ - docs/project-plan/project_todo.svg
182
+ - exe/rag
136
183
  - lib/rails_app_generator.rb
137
184
  - lib/rails_app_generator/add_on.rb
138
185
  - lib/rails_app_generator/addons/annotate.rb
@@ -187,7 +234,12 @@ files:
187
234
  - lib/rails_app_generator/version.rb
188
235
  - package-lock.json
189
236
  - package.json
237
+ - profiles/rag-add-some-pages.json
238
+ - profiles/rag-bootstrap.json
239
+ - profiles/rag-simple.json
240
+ - profiles/rag-tailwind.json
190
241
  - sig/rails_app_generator.rbs
242
+ - templates/README.md.erb
191
243
  - templates/addons/annotate/auto_annotate_models.rake
192
244
  - templates/addons/continuous_integration/.github/workflows/build.yml.erb
193
245
  - templates/addons/devise/app/views/devise/confirmations/new.html.erb
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # frozen_string_literal: true
3
-
4
- require 'pathname'
5
-
6
- source_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../lib")
7
- $LOAD_PATH << source_path
8
-
9
- require 'rails_app_generator'
10
-
11
- # if ARGV.empty?
12
- # puts 'Please provide a path for the new application'
13
- # puts
14
- # puts 'See --help for more info'
15
- # exit 0
16
- # elsif %w[-v --version].include? ARGV[0]
17
- # puts RailsAppGenerator::VERSION
18
- # exit 0
19
- # end
20
-
21
- # templates_root = File.expand_path(File.join('..', 'templates'), File.dirname(__FILE__))
22
- # RailsAppGenerator::AppGenerator.source_root templates_root
23
- # RailsAppGenerator::AppGenerator.source_paths << Rails::Generators::AppGenerator.source_root << templates_root
24
-
25
- # RailsAppGenerator::AppGenerator.start
26
- require 'pry'
27
-
28
- args = {
29
- app_path: 'kw01_bootstrap',
30
- destination_root: '/Users/davidcruwys/dev/kweb'
31
- }
32
- opts = {
33
- skip_git: true,
34
- skip_bundle: false
35
- # css: 'bootstrap'
36
- }
37
-
38
- # RailsAppGenerator::AppGenerator.override_template_path = '/Users/davidcruwys/dev/kgems/rails_app_generator/templates'
39
- # RailsAppGenerator::AppGenerator.addon_template_path = '/Users/davidcruwys/dev/kgems/rails_app_generator/templates/addons/%<addon>'
40
-
41
- instance = RailsAppGenerator::Starter.new(args)
42
- FileUtils.rm_rf(instance.target_path)
43
-
44
- rails_options = RailsAppGenerator::RailsOptions.new(opts)
45
- instance.start(rails_options)
46
-
47
- # system 'gem env'
48
-
49
- # console_output_file = File.expand_path('../../../lib/rails_app_generator/notes/kw01.txt', File.join(File.dirname(__FILE__)))
50
-
51
- # File.write(console_output_file, instance.console_output.split("\n").compact.collect(&:strip).join("\n"))