Class: PolylingoChat::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- PolylingoChat::Generators::InstallGenerator
- Includes:
- Rails::Generators::Migration
- Defined in:
- lib/generators/polylingo_chat/install/install_generator.rb
Class Method Summary collapse
Instance Method Summary collapse
- #add_routes ⇒ Object
- #configure_cable ⇒ Object
- #copy_migrations ⇒ Object
- #create_channels ⇒ Object
- #create_initializer ⇒ Object
- #create_javascript_files ⇒ Object
- #download_actioncable ⇒ Object
-
#initialize(*args) ⇒ InstallGenerator
constructor
A new instance of InstallGenerator.
- #setup_solid_cable ⇒ Object
- #show_readme ⇒ Object
- #update_application_js ⇒ Object
- #update_importmap ⇒ Object
Constructor Details
#initialize(*args) ⇒ InstallGenerator
Returns a new instance of InstallGenerator.
16 17 18 19 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 16 def initialize(*args) super @api_only = detect_api_only_mode end |
Class Method Details
.next_migration_number(dirname) ⇒ Object
21 22 23 24 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 21 def self.next_migration_number(dirname) next_migration_number = current_migration_number(dirname) + 1 ActiveRecord::Migration.next_migration_number(next_migration_number) end |
Instance Method Details
#add_routes ⇒ Object
72 73 74 75 76 77 78 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 72 def add_routes unless @api_only route 'mount ActionCable.server => "/cable"' end route 'mount PolylingoChat::Engine => "/polylingo_chat"' end |
#configure_cable ⇒ Object
50 51 52 53 54 55 56 57 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 50 def configure_cable return if @api_only if File.exist?("config/cable.yml") gsub_file "config/cable.yml", /^development:\s*\n\s+adapter:\s+\w+.*$/m do |match| "development:\n adapter: solid_cable\n polling_interval: 0.1.seconds\n message_retention: 1.day" end end end |
#copy_migrations ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 26 def copy_migrations migration_template "create_conversations.rb", "db/migrate/create_polylingo_chat_conversations.rb" migration_template "create_participants.rb", "db/migrate/create_polylingo_chat_participants.rb" migration_template "create_messages.rb", "db/migrate/create_polylingo_chat_messages.rb" migration_template "create_message_translations.rb", "db/migrate/create_polylingo_chat_message_translations.rb" migration_template "create_message_read_receipts.rb", "db/migrate/create_polylingo_chat_message_read_receipts.rb" end |
#create_channels ⇒ Object
34 35 36 37 38 39 40 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 34 def create_channels return if @api_only empty_directory "app/channels/application_cable" template "channels/application_cable/channel.rb", "app/channels/application_cable/channel.rb" template "channels/application_cable/connection.rb", "app/channels/application_cable/connection.rb" template "channels/polylingo_chat_channel.rb", "app/channels/polylingo_chat_channel.rb" end |
#create_initializer ⇒ Object
108 109 110 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 108 def create_initializer template "initializer.rb", "config/initializers/polylingo_chat.rb" end |
#create_javascript_files ⇒ Object
42 43 44 45 46 47 48 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 42 def create_javascript_files return if @api_only empty_directory "app/javascript/channels" template "javascript/chat.js", "app/javascript/chat.js" template "javascript/channels/consumer.js", "app/javascript/channels/consumer.js" template "javascript/channels/index.js", "app/javascript/channels/index.js" end |
#download_actioncable ⇒ Object
65 66 67 68 69 70 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 65 def download_actioncable return if @api_only empty_directory "vendor/javascript" say "Downloading ActionCable ESM module...", :green run "curl -o vendor/javascript/@rails--actioncable.js https://ga.jspm.io/npm:@rails/[email protected]/app/assets/javascripts/actioncable.esm.js" end |
#setup_solid_cable ⇒ Object
59 60 61 62 63 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 59 def setup_solid_cable return if @api_only say "Setting up Solid Cable...", :green rails_command "solid_cable:install", abort_on_failure: false end |
#show_readme ⇒ Object
112 113 114 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 112 def show_readme readme "README" if behavior == :invoke end |
#update_application_js ⇒ Object
95 96 97 98 99 100 101 102 103 104 105 106 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 95 def update_application_js return if @api_only if File.exist?("app/javascript/application.js") append_to_file "app/javascript/application.js" do <<~JS // PolylingoChat real-time chat import "chat" JS end end end |
#update_importmap ⇒ Object
80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/generators/polylingo_chat/install/install_generator.rb', line 80 def update_importmap return if @api_only if File.exist?("config/importmap.rb") append_to_file "config/importmap.rb" do <<~RUBY # PolylingoChat real-time chat pin "@rails/actioncable", to: "@rails--actioncable.js" pin_all_from "app/javascript/channels", under: "channels" pin "chat", to: "chat.js" RUBY end end end |