Class: SvelteOnRails::Generators::ShowcaseGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/showcase_generator.rb

Constant Summary collapse

NPM_PACKAGE_NAME =
'@csedl/svelte-on-rails'

Instance Method Summary collapse

Constructor Details

#initialize(*args) ⇒ ShowcaseGenerator

Returns a new instance of ShowcaseGenerator.



19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/generators/showcase_generator.rb', line 19

def initialize(*args)

  @config = SvelteOnRails::Configuration.instance

  super

  puts
  puts '=' * 80
  puts 'INSTALLING DEMO COMPONENTS'
  puts '=' * 80

end

Instance Method Details

#finishObject



77
78
79
80
81
82
83
84
85
86
# File 'lib/generators/showcase_generator.rb', line 77

def finish
  puts '-' * 80

  puts "SvelteOnRails Showcase installed successfully!"
  puts '-' * 80
  puts " => Restart the server and check if it all works."
  puts " => You can now access the Hello World component on: http://localhost:3000/svelte_on_rails_showcase."
  puts '-' * 80
  puts "Happy coding!"
end

#hello_worldObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/generators/showcase_generator.rb', line 57

def hello_world

  puts '-' * 80
  puts ' ▶︎▶︎▶︎︎ INSTALLING Hello World component'
  puts '-' * 80

  hw_i = SvelteOnRails::Installer::HelloWorld

  utils_i = SvelteOnRails::Installer::Utils
  utils_i.add_route("  get \"svelte_on_rails_showcase/web_socket\"", app_root: Rails.root)
  utils_i.add_route("  get \"svelte_on_rails_showcase/web_socket_action\"", app_root: Rails.root)
  npm_i = SvelteOnRails::Installer::Npm
  npm_i.install_or_update_package('axios')
  npm_i.install_or_update_package('@rails/actioncable')
  js_i = SvelteOnRails::Installer::Javascript
  init_stat = '../initializers/actionCable.js'
  js_i.append_import_statement(application_js_path, init_stat, "import '#{init_stat}';")
  @hello_world_path = hw_i.install_hello_world(['showcase'], app_root: nil, force: true, silent: true, vite_dir: @config.configs[:vite_source_dir])
end

#turboObject



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/generators/showcase_generator.rb', line 32

def turbo

  puts '-' * 80
  puts ' ▶︎▶︎▶︎ INSTALLING @hotwired/turbo-rails'
  puts '-' * 80
  npm_i = SvelteOnRails::Installer::Npm
  tr_pkg = '@hotwired/turbo-rails'
  npm_i.install_or_update_package(tr_pkg)
  js_i = SvelteOnRails::Installer::Javascript
  js_i.append_import_statement(application_js_path, tr_pkg, "import '#{tr_pkg}';")

  puts '-' * 80
  puts ' ▶︎▶︎▶︎ INSTALLING Turbo::StreamsChannel'
  puts '-' * 80

  gem_uts = SvelteOnRails::GemUtils
  puts '• installing turbo-rails ...'
  gem_uts.install_gem('turbo-rails')
  puts '• installed turbo-rails!'
  utils_i = SvelteOnRails::Installer::Utils
  puts '• running turbo:install ...'
  utils_i.run_command('bundle exec rails turbo:install')
  puts '• turbo:install finished!'
end