Class: Cdek::Generators::InstallGenerator

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

Overview

bin/rails generate cdek:install

Кладёт в хост-приложение:

* config/initializers/cdek.rb                              — настройка гема
* app/javascript/controllers/cdek_widget_controller.js     — Stimulus-контроллер виджета ПВЗ

Сам Engine монтируется отдельной строкой в config/routes.rb пользователя:

mount Cdek::Engine, at: "/cdek"

Instance Method Summary collapse

Instance Method Details

#copy_initializerObject



20
21
22
# File 'lib/generators/cdek/install/install_generator.rb', line 20

def copy_initializer
  template "cdek.rb", "config/initializers/cdek.rb"
end

#copy_stimulus_controllerObject



24
25
26
27
# File 'lib/generators/cdek/install/install_generator.rb', line 24

def copy_stimulus_controller
  copy_file "cdek_widget_controller.js",
            "app/javascript/controllers/cdek_widget_controller.js"
end

#print_post_installObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/generators/cdek/install/install_generator.rb', line 29

def print_post_install
  say "\n========================================================================", :green
  say "  Гем Cdek установлен.", :green
  say "========================================================================", :green
  say "  1) Добавьте маршрут в config/routes.rb:"
  say "       mount Cdek::Engine, at: \"/cdek\""
  say ""
  say "  2) Заполните .env (или ENV) переменными:"
  say "       CDEK_ACCOUNT=..."
  say "       CDEK_SECURE_PASSWORD=..."
  say "       YANDEX_MAPS_API_KEY=...   # ключ Yandex Maps JS API для карты виджета"
  say ""
  say "  3) Вставьте виджет в любую view, например в модалку оформления заказа:"
  say "       = cdek_widget_tag api_key: ENV[\"YANDEX_MAPS_API_KEY\"],"
  say "                         default_city: \"Москва\","
  say "                         modal_id: \"cdek-points-modal\""
  say ""
  say "  4) Скрытые поля для приёма выбранного пункта (внутри order_form):"
  say "       order_cdek_point_code"
  say "       order_cdek_point_name"
  say "       order_cdek_point_address"
  say "       order_cdek_city_code"
  say "     (DOM-id можно переопределить аргументами field_* у cdek_widget_tag.)"
  say "========================================================================", :green
end