Class: MakeItSo::Rails::AppBuilder
- Inherits:
-
Rails::AppBuilder
- Object
- Rails::AppBuilder
- MakeItSo::Rails::AppBuilder
- Defined in:
- lib/make_it_so/rails/app_builder.rb
Instance Method Summary collapse
- #application_controller ⇒ Object
- #application_record ⇒ Object
- #base_javascripts ⇒ Object
- #base_stylesheets ⇒ Object
- #devise_dependency ⇒ Object
- #eliminate_byebug ⇒ Object
- #factory_bot_rspec ⇒ Object
- #fix_generators ⇒ Object
- #foundation_dependency ⇒ Object
- #jest ⇒ Object
- #karma ⇒ Object
- #pry_rails_dependency ⇒ Object
- #react ⇒ Object
- #rspec_dependency ⇒ Object
- #shoulda_rspec ⇒ Object
- #valid_attribute_rspec ⇒ Object
Instance Method Details
#application_controller ⇒ Object
7 8 9 10 11 |
# File 'lib/make_it_so/rails/app_builder.rb', line 7 def application_controller inside 'app/controllers' do template 'application_controller.rb' end end |
#application_record ⇒ Object
13 14 15 16 17 |
# File 'lib/make_it_so/rails/app_builder.rb', line 13 def application_record inside 'app/models' do template 'application_record.rb' end end |
#base_javascripts ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/make_it_so/rails/app_builder.rb', line 19 def base_javascripts self.gem 'jquery-rails' inside 'app/assets/javascripts' do template 'application.js' jquery_files = "//= require jquery\n" + "//= require jquery_ujs\n" gsub_file 'application.js', "//= require rails-ujs\n", jquery_files end end |
#base_stylesheets ⇒ Object
29 30 31 32 33 |
# File 'lib/make_it_so/rails/app_builder.rb', line 29 def base_stylesheets inside 'app/assets/stylesheets' do template 'application.css' end end |
#devise_dependency ⇒ Object
189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/make_it_so/rails/app_builder.rb', line 189 def devise_dependency self.gem 'devise' after_bundle do generate 'devise:install' generate 'devise:views' generate 'devise user' if [:rspec] inside 'spec' do directory 'features' inside 'support' do insert_into_file 'factory_bot.rb', after: "FactoryBot.define do\n" do snippet('user_factory.rb') end template 'devise_controller_spec.rb' end end end route "root 'homes\#index'" end end |
#eliminate_byebug ⇒ Object
45 46 47 48 |
# File 'lib/make_it_so/rails/app_builder.rb', line 45 def eliminate_byebug both_lines = /^[[:space:]]*# Call 'byebug'.*gem 'byebug'.*?$\n/m gsub_file 'Gemfile', both_lines, "\n" end |
#factory_bot_rspec ⇒ Object
144 145 146 147 148 149 150 151 152 153 154 155 |
# File 'lib/make_it_so/rails/app_builder.rb', line 144 def factory_bot_rspec self.gem 'factory_bot', group: [:development, :test] after_bundle do inside 'spec' do uncomment_lines 'rails_helper.rb', /spec\/support\/\*\*\/\*.rb/ inside 'support' do template 'factory_bot.rb' end end end end |
#fix_generators ⇒ Object
39 40 41 42 43 |
# File 'lib/make_it_so/rails/app_builder.rb', line 39 def fix_generators inject_into_class 'config/application.rb', 'Application' do snippet('application_generator.rb') end end |
#foundation_dependency ⇒ Object
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
# File 'lib/make_it_so/rails/app_builder.rb', line 217 def foundation_dependency self.gem 'foundation-rails', '~> 5.0' after_bundle do generate 'foundation:install foundation' # foundation-rails generates an application layout so we # must remove it # there is a pull request open to skip this: # https://github.com/zurb/foundation-rails/pull/108 remove_file 'app/views/layouts/foundation.html.erb' inside 'app/assets/javascripts' do insert_into_file 'application.js', "//= require foundation\n", after: "//= require jquery_ujs\n" end end end |
#jest ⇒ Object
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/make_it_so/rails/app_builder.rb', line 96 def jest after_bundle do run 'yarn add jest babel-jest --dev' run 'mkdir -p spec/javascript' modify_json(package_json_file) do |json| json["scripts"] ||= {} json["scripts"]["test"] = "node_modules/.bin/jest" json["scripts"]["test:dev"] = "node_modules/.bin/jest --notify --watch" json["jest"] ||= {} json["jest"].merge!({ "roots": [ "spec/javascript" ], "moduleDirectories": [ "node_modules", "app/javascript" ] }) end rake 'yarn:install' end end |
#karma ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
# File 'lib/make_it_so/rails/app_builder.rb', line 74 def karma after_bundle do unparsed_json = snippet('js_testing_deps.json') parsed_json = JSON.parse(unparsed_json) modify_json(package_json_file) do |json| json["devDependencies"] ||= {} json["devDependencies"].merge!(parsed_json["devDependencies"]) json["scripts"] ||= {} json["scripts"]["test"] = "node_modules/.bin/karma start karma.conf.js" end template 'karma.conf.js' inside 'spec/javascript' do template 'exampleTest.js' template 'testHelper.js' end rake 'yarn:install' end end |
#pry_rails_dependency ⇒ Object
35 36 37 |
# File 'lib/make_it_so/rails/app_builder.rb', line 35 def pry_rails_dependency self.gem 'pry-rails', group: [:development, :test] end |
#react ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/make_it_so/rails/app_builder.rb', line 50 def react self.gem 'webpacker', '~> 3.3' after_bundle do rake 'webpacker:install' rake 'webpacker:install:react' unparsed_json = snippet('react_dependencies.json') parsed_json = JSON.parse(unparsed_json) modify_json(package_json_file) do |json| ["dependencies", "devDependencies"].each do |key| json[key] ||= {} json[key].merge!(parsed_json[key]) end json["scripts"] ||= {} json["scripts"]["start"] = "./bin/webpack-dev-server" end rake 'yarn:install' end end |
#rspec_dependency ⇒ Object
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 |
# File 'lib/make_it_so/rails/app_builder.rb', line 120 def rspec_dependency self.gem 'rspec-rails', group: [:development, :test] self.gem 'capybara', group: [:development, :test] self.gem 'launchy', group: [:development, :test] after_bundle do #stop spring in case it is running - it will hang #https://github.com/rails/rails/issues/13381 run 'spring stop' generate 'rspec:install' inside 'spec' do empty_directory 'support' end inside 'spec' do insert_into_file 'rails_helper.rb', after: rails_helper_insertion_hook do "require 'capybara/rspec'\n" end end end end |
#shoulda_rspec ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
# File 'lib/make_it_so/rails/app_builder.rb', line 174 def shoulda_rspec self.gem 'shoulda-matchers', group: [:development, :test], require: false after_bundle do inside 'spec' do insert_into_file 'rails_helper.rb', after: rails_helper_insertion_hook do "require 'shoulda-matchers'\n" end end end end |
#valid_attribute_rspec ⇒ Object
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/make_it_so/rails/app_builder.rb', line 157 def valid_attribute_rspec self.gem 'valid_attribute', group: [:development, :test] after_bundle do inside 'spec' do insert_into_file 'rails_helper.rb', after: rails_helper_insertion_hook do "require File.join(File.dirname(__FILE__), 'support/valid_attribute')\n" end inside 'support' do template 'valid_attribute.rb' end end end end |