Class: Kiqr::Cli::Generators::AppGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/kiqr/cli/generators/app/app_generator.rb

Constant Summary collapse

PASSTHROUGH_OPTIONS =
%w[
  ruby template skip_gemfile skip_bootsnap skip_bundle skip_git skip_keeps skip_active_record skip_sprockets
  skip_spring database javascript skip_javascript dev edge skip_turbolinks skip_test_unit rc
  no_rc force pretend quiet skip help version skip_decrypted_diffs
]

Instance Method Summary collapse

Instance Method Details

#add_kiqr_gemObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 29

def add_kiqr_gem
  if kiqr_core_directory = find_upwards("kiqr.gemspec")
    version_tag = "path: \"#{kiqr_core_directory}\""
  else
    version_tag = "\"~> #{Kiqr.version}\""
  end

  gemfile_additions = <<~EOS
  \n
  # KIQR Framework [https://github.com/kiqr/kiqr]
  gem "kiqr", #{version_tag}
  EOS
  append_file File.expand_path("Gemfile", app_path), gemfile_additions, after: /gem "rails", ".*"/
end

#add_test_gemsObject



44
45
46
47
48
49
50
51
52
53
54
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 44

def add_test_gems
  gemfile_additions = <<~EOS
  \n
    gem "factory_bot", "~> 6.4.3"
    gem "faraday-retry"
    gem "faraday-multipart"
    gem "faker"
    gem "rails-controller-testing"
EOS
  append_file File.expand_path("Gemfile", app_path), gemfile_additions, after: /gem "selenium-webdriver"/
end

#generate_rails_applicationObject



23
24
25
26
27
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 23

def generate_rails_application
  say "Generating Rails application..."
  opts = {}.merge(options).slice(*PASSTHROUGH_OPTIONS)
  invoke Rails::Generators::AppGenerator, [ app_path ], opts
end

#reset_gemfile_envObject



67
68
69
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 67

def reset_gemfile_env
  ENV["BUNDLE_GEMFILE"] = @original_gemfile
end

#run_kiqr_update_generatorObject



56
57
58
59
60
61
62
63
64
65
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 56

def run_kiqr_update_generator
  return if options[:skip_bundle]

  inside app_path do
    run "bundle install"
    run "bundle exec rails generate kiqr:install"
    run "bundle exec rails generate kiqr:update"
    run "bundle exec rails generate kiqr:themes:irelia:install"
  end
end

#set_bundle_gemfileObject

Temporary set BUNDLE_GEMFILE to the path of the Gemfile in the root of the application



18
19
20
21
# File 'lib/kiqr/cli/generators/app/app_generator.rb', line 18

def set_bundle_gemfile
  @original_gemfile = ENV["BUNDLE_GEMFILE"]
  ENV["BUNDLE_GEMFILE"] = File.join(app_path, "Gemfile")
end