Class: UploadcareImportmapGenerator

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

Overview

A generator that sets up Uploadcare File Uploader for Rails importmap

Instance Method Summary collapse

Instance Method Details

#add_importmap_pinsObject



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/generators/uploadcare_importmap_generator.rb', line 9

def add_importmap_pins
  return unless importmap_path.exist?

  append_to_file importmap_path do
    <<~RUBY

      # Uploadcare File Uploader
      pin "@uploadcare/file-uploader", to: "https://cdn.jsdelivr.net/npm/@uploadcare/file-uploader@v1/web/file-uploader.min.js"
      pin "uploadcare"
    RUBY
  end

  say_status :pin, "@uploadcare/file-uploader"
  say_status :pin, "uploadcare"
end

#create_uploadcare_initializerObject



25
26
27
# File 'lib/generators/uploadcare_importmap_generator.rb', line 25

def create_uploadcare_initializer
  copy_file "uploadcare_js_initializer.js", "app/javascript/uploadcare.js"
end

#show_post_install_messageObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/generators/uploadcare_importmap_generator.rb', line 29

def show_post_install_message
  say ""
  say "=" * 60
  say "Uploadcare File Uploader setup complete!", :green
  say "=" * 60
  say ""
  say "Next steps:"
  say ""
  say "1. Add the Uploadcare stylesheet to your layout (e.g. app/views/layouts/application.html.erb):"
  say '   <%= stylesheet_link_tag "https://cdn.jsdelivr.net/npm/@uploadcare/file-uploader@v1/web/uc-file-uploader-regular.min.css" %>', :cyan
  say ""
  say "2. Import the initializer in your application.js:"
  say '   import "uploadcare"', :cyan
  say ""
  say "3. Add the config and uploader to your views:"
  say '   <%= uploadcare_config_tag(ctx_name: "my-uploader") %>', :cyan
  say '   <%= uploadcare_uploader_field :post, :image, ctx_name: "my-uploader" %>', :cyan
  say ""
  say "4. (Optional) Customize the JavaScript in app/javascript/uploadcare.js"
  say ""
end