forked from rspec/rspec-rails
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate_app.rb
69 lines (57 loc) · 2.43 KB
/
generate_app.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
require 'nokogiri'
rspec_rails_repo_path = File.expand_path('..', __dir__)
rspec_dependencies_gemfile = File.join(rspec_rails_repo_path, 'Gemfile-rspec-dependencies')
rails_dependencies_gemfile = File.join(rspec_rails_repo_path, 'Gemfile-rails-dependencies')
bundle_install_path = File.join(rspec_rails_repo_path, '..', 'bundle')
maintenance_branch_file = File.join(rspec_rails_repo_path, 'maintenance-branch')
ci_retry_script = File.join(
rspec_rails_repo_path,
'example_app_generator',
'ci_retry_bundle_install.sh'
)
function_script_file = File.join(rspec_rails_repo_path, 'script/functions.sh')
in_root do
prepend_to_file "Rakefile", "require 'active_support/all'"
# Remove the existing rails version so we can properly use main or other
# edge branches
gsub_file 'Gemfile', /^.*\bgem ['"]rails.*$/, ''
gsub_file 'Gemfile', /^.*\bgem ['"]selenium-webdriver.*$/, ''
gsub_file "Gemfile", /.*web-console.*/, ''
gsub_file "Gemfile", /.*debug.*/, ''
gsub_file "Gemfile", /.*puma.*/, ''
gsub_file "Gemfile", /.*bootsnap.*/, ''
append_to_file 'Gemfile', "gem 'rails-controller-testing'\n"
gsub_file "Gemfile", /.*rails-controller-testing.*/, "gem 'rails-controller-testing', git: 'https://github.com/rails/rails-controller-testing'"
# sqlite3 is an optional, unspecified, dependency and Rails 6.0 only supports `~> 1.4`
gsub_file "Gemfile", /.*gem..sqlite3.*/, "gem 'sqlite3', '~> 1.4'"
# remove webdrivers
gsub_file "Gemfile", /gem ['"]webdrivers['"]/, ""
if RUBY_ENGINE == "jruby"
gsub_file "Gemfile", /.*jdbc.*/, ''
end
# Use our version of RSpec and Rails
append_to_file 'Gemfile', <<-EOT.gsub(/^ +\|/, '')
|gem 'rake', '>= 10.0.0'
|
|gem 'rspec-rails',
| :path => '#{rspec_rails_repo_path}',
| :groups => [:development, :test]
|eval_gemfile '#{rspec_dependencies_gemfile}'
|eval_gemfile '#{rails_dependencies_gemfile}'
EOT
copy_file maintenance_branch_file, 'maintenance-branch'
copy_file ci_retry_script, 'ci_retry_bundle_install.sh'
gsub_file 'ci_retry_bundle_install.sh',
'FUNCTIONS_SCRIPT_FILE',
function_script_file
gsub_file 'ci_retry_bundle_install.sh',
'REPLACE_BUNDLE_PATH',
bundle_install_path
chmod 'ci_retry_bundle_install.sh', 0755
if Rails::VERSION::STRING > '7'
create_file 'app/assets/config/manifest.js' do
"//= link application.css"
end
create_file 'app/assets/stylesheets/application.css'
end
end