Class: Rails::Diff::RailsAppGenerator
- Inherits:
-
Object
- Object
- Rails::Diff::RailsAppGenerator
- Defined in:
- lib/rails/diff/rails_app_generator.rb
Instance Method Summary collapse
- #clear_cache ⇒ Object
- #create_template_app ⇒ Object
-
#initialize(ref: nil, new_app_options: nil, no_cache: false, logger: Logger, cache_dir: Rails::Diff::CACHE_DIR, rails_repo: RailsRepo.new(logger:, cache_dir:)) ⇒ RailsAppGenerator
constructor
A new instance of RailsAppGenerator.
- #install_app_dependencies ⇒ Object
- #run_generator(generator_name, *args, skip, only) ⇒ Object
- #template_app_path ⇒ Object
Constructor Details
#initialize(ref: nil, new_app_options: nil, no_cache: false, logger: Logger, cache_dir: Rails::Diff::CACHE_DIR, rails_repo: RailsRepo.new(logger:, cache_dir:)) ⇒ RailsAppGenerator
Returns a new instance of RailsAppGenerator.
6 7 8 9 10 11 12 13 |
# File 'lib/rails/diff/rails_app_generator.rb', line 6 def initialize(ref: nil, new_app_options: nil, no_cache: false, logger: Logger, cache_dir: Rails::Diff::CACHE_DIR, rails_repo: RailsRepo.new(logger:, cache_dir:)) = .to_s.split @rails_repo = rails_repo @ref = normalize_ref(ref) @logger = logger @cache_dir = cache_dir clear_cache if no_cache end |
Instance Method Details
#clear_cache ⇒ Object
15 16 17 18 19 |
# File 'lib/rails/diff/rails_app_generator.rb', line 15 def clear_cache logger.info "Clearing cache" FileUtils.rm_rf(cache_dir, secure: true) FileUtils.mkdir_p(cache_dir) end |
#create_template_app ⇒ Object
21 22 23 24 25 |
# File 'lib/rails/diff/rails_app_generator.rb', line 21 def create_template_app return if cached_app? create_new_rails_app end |
#install_app_dependencies ⇒ Object
31 32 33 34 35 36 37 38 |
# File 'lib/rails/diff/rails_app_generator.rb', line 31 def install_app_dependencies Dir.chdir(template_app_path) do unless Shell.run!("bundle check", abort: false, logger:) logger.info "Installing application dependencies" Shell.run!("bundle install", logger:) end end end |
#run_generator(generator_name, *args, skip, only) ⇒ Object
40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rails/diff/rails_app_generator.rb', line 40 def run_generator(generator_name, *args, skip, only) Dir.chdir(template_app_path) do Shell.run!("bin/rails", "destroy", generator_name, *args, logger:) logger.info "Running generator: rails generate #{generator_name} #{args.join(" ")}" FileTracker .new_files(template_app_path, skip:, only:) { Shell.run!("bin/rails", "generate", generator_name, *args, logger:) } .map { |it| it.delete_prefix("#{template_app_path}/") } end end |
#template_app_path ⇒ Object
27 28 29 |
# File 'lib/rails/diff/rails_app_generator.rb', line 27 def template_app_path @template_app_path ||= File.join(cache_dir, rails_cache_dir_key, , app_name) end |