почему мой метод шаблона генератора рельсов приводит к 'file_clash' - PullRequest
1 голос
/ 24 октября 2019

Итак, я пишу генератор rails, чтобы сделать самые простые вещи: скопировать некоторые файлы моделей из каталога gem lib / generators / pathways / templates в проект в каталоге app / models. Возможно, я ошибочно понимаю, что метод шаблона в основном представляет собой копию файла с источником / целью.

(обратите внимание, что "pathways" - это имя моего драгоценного камня, который устанавливает этот генератор)

Воткишки кода копии в генераторе:

def copy_models
  project_models_location = "#{Rails.root}/app/models/"
  [
    "pathways_experiment.rb",
    ...
  ].each do |filename|
    puts "copying #{filename} to #{project_models_location}"
    template filename, "#{project_models_location}"
  end
end

Put отображает то, что я ожидал:

копирование pathways_experiment.rb в / Users / meuser / Projects / testing_gem / exp_gem_test /app / models /

однако, вызов метода templates выводит этот вывод:

file_clash app / models

Iпроверил целевой каталог, и в нем нет файлов, так что, похоже, это не потому, что код пытается перезаписать файл.

вот источник всего генератора на случай, если у меня его просто нетвключены или расширены правильные классы / модули:

требуют 'рельсы / генераторы' требуют 'рельсы / генераторы / active_record'

module Pathways
  class InstallGenerator < ActiveRecord::Generators::Base
    include Rails::Generators::Migration
    source_root File.expand_path("../templates", __FILE__)

    def code_that_runs
      puts "PATHWAYS: installing models"
      copy_models
    end

    private

    def copy_models
      project_models_location = "#{Rails.root}/app/models/"
      [
        "pathways_experiment.rb",
        ...
      ].each do |filename|
        puts "copying #{filename} to #{project_models_location}"
        template filename, "#{project_models_location}"
      end
    end
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...